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
@@ -33,10 +33,18 @@
|
|
33
33
|
namespace v8 {
|
34
34
|
namespace internal {
|
35
35
|
|
36
|
+
// ----------------------------------------------------------------------------
|
37
|
+
// Static helper functions
|
38
|
+
|
39
|
+
// Generate a MemOperand for loading a field from an object.
|
40
|
+
static inline MemOperand FieldMemOperand(Register object, int offset) {
|
41
|
+
return MemOperand(object, offset - kHeapObjectTag);
|
42
|
+
}
|
43
|
+
|
36
44
|
|
37
45
|
// Give alias names to registers
|
38
46
|
const Register cp = { 8 }; // JavaScript context pointer
|
39
|
-
|
47
|
+
const Register roots = { 10 }; // Roots array pointer.
|
40
48
|
|
41
49
|
enum InvokeJSFlags {
|
42
50
|
CALL_JS,
|
@@ -49,14 +57,7 @@ class MacroAssembler: public Assembler {
|
|
49
57
|
public:
|
50
58
|
MacroAssembler(void* buffer, int size);
|
51
59
|
|
52
|
-
//
|
53
|
-
// Low-level helpers for compiler
|
54
|
-
|
55
|
-
// Jump, Call, and Ret pseudo instructions implementing inter-working
|
56
|
-
private:
|
57
|
-
void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond = al);
|
58
|
-
void Call(intptr_t target, RelocInfo::Mode rmode, Condition cond = al);
|
59
|
-
public:
|
60
|
+
// Jump, Call, and Ret pseudo instructions implementing inter-working.
|
60
61
|
void Jump(Register target, Condition cond = al);
|
61
62
|
void Jump(byte* target, RelocInfo::Mode rmode, Condition cond = al);
|
62
63
|
void Jump(Handle<Code> code, RelocInfo::Mode rmode, Condition cond = al);
|
@@ -69,8 +70,15 @@ class MacroAssembler: public Assembler {
|
|
69
70
|
// from the stack, clobbering only the sp register.
|
70
71
|
void Drop(int count, Condition cond = al);
|
71
72
|
|
73
|
+
|
74
|
+
// Swap two registers. If the scratch register is omitted then a slightly
|
75
|
+
// less efficient form using xor instead of mov is emitted.
|
76
|
+
void Swap(Register reg1, Register reg2, Register scratch = no_reg);
|
77
|
+
|
72
78
|
void Call(Label* target);
|
73
79
|
void Move(Register dst, Handle<Object> value);
|
80
|
+
// May do nothing if the registers are identical.
|
81
|
+
void Move(Register dst, Register src);
|
74
82
|
// Jumps to the label at the index given by the Smi in "index".
|
75
83
|
void SmiJumpTable(Register index, Vector<Label*> targets);
|
76
84
|
// Load an object from the root table.
|
@@ -78,6 +86,20 @@ class MacroAssembler: public Assembler {
|
|
78
86
|
Heap::RootListIndex index,
|
79
87
|
Condition cond = al);
|
80
88
|
|
89
|
+
|
90
|
+
// Check if object is in new space.
|
91
|
+
// scratch can be object itself, but it will be clobbered.
|
92
|
+
void InNewSpace(Register object,
|
93
|
+
Register scratch,
|
94
|
+
Condition cc, // eq for new space, ne otherwise
|
95
|
+
Label* branch);
|
96
|
+
|
97
|
+
|
98
|
+
// Set the remebered set bit for an offset into an
|
99
|
+
// object. RecordWriteHelper only works if the object is not in new
|
100
|
+
// space.
|
101
|
+
void RecordWriteHelper(Register object, Register offset, Register scracth);
|
102
|
+
|
81
103
|
// Sets the remembered set bit for [address+offset], where address is the
|
82
104
|
// address of the heap object 'object'. The address must be in the first 8K
|
83
105
|
// of an allocated page. The 'scratch' register is used in the
|
@@ -85,6 +107,65 @@ class MacroAssembler: public Assembler {
|
|
85
107
|
// well as the ip register.
|
86
108
|
void RecordWrite(Register object, Register offset, Register scratch);
|
87
109
|
|
110
|
+
// Push two registers. Pushes leftmost register first (to highest address).
|
111
|
+
void Push(Register src1, Register src2, Condition cond = al) {
|
112
|
+
ASSERT(!src1.is(src2));
|
113
|
+
if (src1.code() > src2.code()) {
|
114
|
+
stm(db_w, sp, src1.bit() | src2.bit(), cond);
|
115
|
+
} else {
|
116
|
+
str(src1, MemOperand(sp, 4, NegPreIndex), cond);
|
117
|
+
str(src2, MemOperand(sp, 4, NegPreIndex), cond);
|
118
|
+
}
|
119
|
+
}
|
120
|
+
|
121
|
+
// Push three registers. Pushes leftmost register first (to highest address).
|
122
|
+
void Push(Register src1, Register src2, Register src3, Condition cond = al) {
|
123
|
+
ASSERT(!src1.is(src2));
|
124
|
+
ASSERT(!src2.is(src3));
|
125
|
+
ASSERT(!src1.is(src3));
|
126
|
+
if (src1.code() > src2.code()) {
|
127
|
+
if (src2.code() > src3.code()) {
|
128
|
+
stm(db_w, sp, src1.bit() | src2.bit() | src3.bit(), cond);
|
129
|
+
} else {
|
130
|
+
stm(db_w, sp, src1.bit() | src2.bit(), cond);
|
131
|
+
str(src3, MemOperand(sp, 4, NegPreIndex), cond);
|
132
|
+
}
|
133
|
+
} else {
|
134
|
+
str(src1, MemOperand(sp, 4, NegPreIndex), cond);
|
135
|
+
Push(src2, src3, cond);
|
136
|
+
}
|
137
|
+
}
|
138
|
+
|
139
|
+
// Push four registers. Pushes leftmost register first (to highest address).
|
140
|
+
void Push(Register src1, Register src2,
|
141
|
+
Register src3, Register src4, Condition cond = al) {
|
142
|
+
ASSERT(!src1.is(src2));
|
143
|
+
ASSERT(!src2.is(src3));
|
144
|
+
ASSERT(!src1.is(src3));
|
145
|
+
ASSERT(!src1.is(src4));
|
146
|
+
ASSERT(!src2.is(src4));
|
147
|
+
ASSERT(!src3.is(src4));
|
148
|
+
if (src1.code() > src2.code()) {
|
149
|
+
if (src2.code() > src3.code()) {
|
150
|
+
if (src3.code() > src4.code()) {
|
151
|
+
stm(db_w,
|
152
|
+
sp,
|
153
|
+
src1.bit() | src2.bit() | src3.bit() | src4.bit(),
|
154
|
+
cond);
|
155
|
+
} else {
|
156
|
+
stm(db_w, sp, src1.bit() | src2.bit() | src3.bit(), cond);
|
157
|
+
str(src4, MemOperand(sp, 4, NegPreIndex), cond);
|
158
|
+
}
|
159
|
+
} else {
|
160
|
+
stm(db_w, sp, src1.bit() | src2.bit(), cond);
|
161
|
+
Push(src3, src4, cond);
|
162
|
+
}
|
163
|
+
} else {
|
164
|
+
str(src1, MemOperand(sp, 4, NegPreIndex), cond);
|
165
|
+
Push(src2, src3, src4, cond);
|
166
|
+
}
|
167
|
+
}
|
168
|
+
|
88
169
|
// ---------------------------------------------------------------------------
|
89
170
|
// Stack limit support
|
90
171
|
|
@@ -108,8 +189,8 @@ class MacroAssembler: public Assembler {
|
|
108
189
|
// Leave the current exit frame. Expects the return value in r0.
|
109
190
|
void LeaveExitFrame(ExitFrame::Mode mode);
|
110
191
|
|
111
|
-
//
|
112
|
-
|
192
|
+
// Get the actual activation frame alignment for target environment.
|
193
|
+
static int ActivationFrameAlignment();
|
113
194
|
|
114
195
|
void LoadContext(Register dst, int context_chain_length);
|
115
196
|
|
@@ -134,6 +215,10 @@ class MacroAssembler: public Assembler {
|
|
134
215
|
const ParameterCount& actual,
|
135
216
|
InvokeFlag flag);
|
136
217
|
|
218
|
+
void InvokeFunction(JSFunction* function,
|
219
|
+
const ParameterCount& actual,
|
220
|
+
InvokeFlag flag);
|
221
|
+
|
137
222
|
|
138
223
|
#ifdef ENABLE_DEBUGGER_SUPPORT
|
139
224
|
// ---------------------------------------------------------------------------
|
@@ -145,6 +230,7 @@ class MacroAssembler: public Assembler {
|
|
145
230
|
void CopyRegistersFromStackToMemory(Register base,
|
146
231
|
Register scratch,
|
147
232
|
RegList regs);
|
233
|
+
void DebugBreak();
|
148
234
|
#endif
|
149
235
|
|
150
236
|
// ---------------------------------------------------------------------------
|
@@ -171,9 +257,14 @@ class MacroAssembler: public Assembler {
|
|
171
257
|
// clobbered if it the same as the holder register. The function
|
172
258
|
// returns a register containing the holder - either object_reg or
|
173
259
|
// holder_reg.
|
260
|
+
// The function can optionally (when save_at_depth !=
|
261
|
+
// kInvalidProtoDepth) save the object at the given depth by moving
|
262
|
+
// it to [sp].
|
174
263
|
Register CheckMaps(JSObject* object, Register object_reg,
|
175
264
|
JSObject* holder, Register holder_reg,
|
176
|
-
Register scratch,
|
265
|
+
Register scratch,
|
266
|
+
int save_at_depth,
|
267
|
+
Label* miss);
|
177
268
|
|
178
269
|
// Generate code for checking access rights - used for security checks
|
179
270
|
// on access to global objects across environments. The holder register
|
@@ -209,6 +300,37 @@ class MacroAssembler: public Assembler {
|
|
209
300
|
// allocation is undone.
|
210
301
|
void UndoAllocationInNewSpace(Register object, Register scratch);
|
211
302
|
|
303
|
+
|
304
|
+
void AllocateTwoByteString(Register result,
|
305
|
+
Register length,
|
306
|
+
Register scratch1,
|
307
|
+
Register scratch2,
|
308
|
+
Register scratch3,
|
309
|
+
Label* gc_required);
|
310
|
+
void AllocateAsciiString(Register result,
|
311
|
+
Register length,
|
312
|
+
Register scratch1,
|
313
|
+
Register scratch2,
|
314
|
+
Register scratch3,
|
315
|
+
Label* gc_required);
|
316
|
+
void AllocateTwoByteConsString(Register result,
|
317
|
+
Register length,
|
318
|
+
Register scratch1,
|
319
|
+
Register scratch2,
|
320
|
+
Label* gc_required);
|
321
|
+
void AllocateAsciiConsString(Register result,
|
322
|
+
Register length,
|
323
|
+
Register scratch1,
|
324
|
+
Register scratch2,
|
325
|
+
Label* gc_required);
|
326
|
+
|
327
|
+
// Allocates a heap number or jumps to the need_gc label if the young space
|
328
|
+
// is full and a scavenge is needed.
|
329
|
+
void AllocateHeapNumber(Register result,
|
330
|
+
Register scratch1,
|
331
|
+
Register scratch2,
|
332
|
+
Label* gc_required);
|
333
|
+
|
212
334
|
// ---------------------------------------------------------------------------
|
213
335
|
// Support functions.
|
214
336
|
|
@@ -243,6 +365,29 @@ class MacroAssembler: public Assembler {
|
|
243
365
|
Register type_reg,
|
244
366
|
InstanceType type);
|
245
367
|
|
368
|
+
|
369
|
+
// Check if the map of an object is equal to a specified map and
|
370
|
+
// branch to label if not. Skip the smi check if not required
|
371
|
+
// (object is known to be a heap object)
|
372
|
+
void CheckMap(Register obj,
|
373
|
+
Register scratch,
|
374
|
+
Handle<Map> map,
|
375
|
+
Label* fail,
|
376
|
+
bool is_heap_object);
|
377
|
+
|
378
|
+
// Load and check the instance type of an object for being a string.
|
379
|
+
// Loads the type into the second argument register.
|
380
|
+
// Returns a condition that will be enabled if the object was a string.
|
381
|
+
Condition IsObjectStringType(Register obj,
|
382
|
+
Register type) {
|
383
|
+
ldr(type, FieldMemOperand(obj, HeapObject::kMapOffset));
|
384
|
+
ldrb(type, FieldMemOperand(type, Map::kInstanceTypeOffset));
|
385
|
+
tst(type, Operand(kIsNotStringMask));
|
386
|
+
ASSERT_EQ(0, kStringTag);
|
387
|
+
return eq;
|
388
|
+
}
|
389
|
+
|
390
|
+
|
246
391
|
inline void BranchOnSmi(Register value, Label* smi_label) {
|
247
392
|
tst(value, Operand(kSmiTagMask));
|
248
393
|
b(eq, smi_label);
|
@@ -257,11 +402,20 @@ class MacroAssembler: public Assembler {
|
|
257
402
|
// occurred.
|
258
403
|
void IllegalOperation(int num_arguments);
|
259
404
|
|
405
|
+
// Get the number of least significant bits from a register
|
406
|
+
void GetLeastBitsFromSmi(Register dst, Register src, int num_least_bits);
|
407
|
+
|
260
408
|
// Uses VFP instructions to Convert a Smi to a double.
|
261
409
|
void IntegerToDoubleConversionWithVFP3(Register inReg,
|
262
410
|
Register outHighReg,
|
263
411
|
Register outLowReg);
|
264
412
|
|
413
|
+
// Count leading zeros in a 32 bit word. On ARM5 and later it uses the clz
|
414
|
+
// instruction. On pre-ARM5 hardware this routine gives the wrong answer
|
415
|
+
// for 0 (31 instead of 32).
|
416
|
+
void CountLeadingZeros(Register source,
|
417
|
+
Register scratch,
|
418
|
+
Register zeros);
|
265
419
|
|
266
420
|
// ---------------------------------------------------------------------------
|
267
421
|
// Runtime calls
|
@@ -269,25 +423,54 @@ class MacroAssembler: public Assembler {
|
|
269
423
|
// Call a code stub.
|
270
424
|
void CallStub(CodeStub* stub, Condition cond = al);
|
271
425
|
|
426
|
+
// Call a code stub.
|
427
|
+
void TailCallStub(CodeStub* stub, Condition cond = al);
|
428
|
+
|
272
429
|
// Return from a code stub after popping its arguments.
|
273
430
|
void StubReturn(int argc);
|
274
431
|
|
275
432
|
// Call a runtime routine.
|
276
|
-
// Eventually this should be used for all C calls.
|
277
433
|
void CallRuntime(Runtime::Function* f, int num_arguments);
|
278
434
|
|
279
435
|
// Convenience function: Same as above, but takes the fid instead.
|
280
436
|
void CallRuntime(Runtime::FunctionId fid, int num_arguments);
|
281
437
|
|
438
|
+
// Convenience function: call an external reference.
|
439
|
+
void CallExternalReference(const ExternalReference& ext,
|
440
|
+
int num_arguments);
|
441
|
+
|
282
442
|
// Tail call of a runtime routine (jump).
|
283
|
-
// Like
|
443
|
+
// Like JumpToExternalReference, but also takes care of passing the number
|
284
444
|
// of parameters.
|
285
|
-
void
|
445
|
+
void TailCallExternalReference(const ExternalReference& ext,
|
446
|
+
int num_arguments,
|
447
|
+
int result_size);
|
448
|
+
|
449
|
+
// Convenience function: tail call a runtime routine (jump).
|
450
|
+
void TailCallRuntime(Runtime::FunctionId fid,
|
286
451
|
int num_arguments,
|
287
452
|
int result_size);
|
288
453
|
|
454
|
+
// Before calling a C-function from generated code, align arguments on stack.
|
455
|
+
// After aligning the frame, non-register arguments must be stored in
|
456
|
+
// sp[0], sp[4], etc., not pushed. The argument count assumes all arguments
|
457
|
+
// are word sized.
|
458
|
+
// Some compilers/platforms require the stack to be aligned when calling
|
459
|
+
// C++ code.
|
460
|
+
// Needs a scratch register to do some arithmetic. This register will be
|
461
|
+
// trashed.
|
462
|
+
void PrepareCallCFunction(int num_arguments, Register scratch);
|
463
|
+
|
464
|
+
// Calls a C function and cleans up the space for arguments allocated
|
465
|
+
// by PrepareCallCFunction. The called function is not allowed to trigger a
|
466
|
+
// garbage collection, since that might move the code and invalidate the
|
467
|
+
// return address (unless this is somehow accounted for by the called
|
468
|
+
// function).
|
469
|
+
void CallCFunction(ExternalReference function, int num_arguments);
|
470
|
+
void CallCFunction(Register function, int num_arguments);
|
471
|
+
|
289
472
|
// Jump to a runtime routine.
|
290
|
-
void
|
473
|
+
void JumpToExternalReference(const ExternalReference& builtin);
|
291
474
|
|
292
475
|
// Invoke specified builtin JavaScript function. Adds an entry to
|
293
476
|
// the unresolved list if the name does not resolve.
|
@@ -297,13 +480,6 @@ class MacroAssembler: public Assembler {
|
|
297
480
|
// setup the function in r1.
|
298
481
|
void GetBuiltinEntry(Register target, Builtins::JavaScript id);
|
299
482
|
|
300
|
-
struct Unresolved {
|
301
|
-
int pc;
|
302
|
-
uint32_t flags; // see Bootstrapper::FixupFlags decoders/encoders.
|
303
|
-
const char* name;
|
304
|
-
};
|
305
|
-
List<Unresolved>* unresolved() { return &unresolved_; }
|
306
|
-
|
307
483
|
Handle<Object> CodeObject() { return code_object_; }
|
308
484
|
|
309
485
|
|
@@ -337,12 +513,52 @@ class MacroAssembler: public Assembler {
|
|
337
513
|
void set_allow_stub_calls(bool value) { allow_stub_calls_ = value; }
|
338
514
|
bool allow_stub_calls() { return allow_stub_calls_; }
|
339
515
|
|
516
|
+
// ---------------------------------------------------------------------------
|
517
|
+
// Smi utilities
|
518
|
+
|
519
|
+
// Jump if either of the registers contain a non-smi.
|
520
|
+
void JumpIfNotBothSmi(Register reg1, Register reg2, Label* on_not_both_smi);
|
521
|
+
// Jump if either of the registers contain a smi.
|
522
|
+
void JumpIfEitherSmi(Register reg1, Register reg2, Label* on_either_smi);
|
523
|
+
|
524
|
+
// ---------------------------------------------------------------------------
|
525
|
+
// String utilities
|
526
|
+
|
527
|
+
// Checks if both objects are sequential ASCII strings and jumps to label
|
528
|
+
// if either is not. Assumes that neither object is a smi.
|
529
|
+
void JumpIfNonSmisNotBothSequentialAsciiStrings(Register object1,
|
530
|
+
Register object2,
|
531
|
+
Register scratch1,
|
532
|
+
Register scratch2,
|
533
|
+
Label* failure);
|
534
|
+
|
535
|
+
// Checks if both objects are sequential ASCII strings and jumps to label
|
536
|
+
// if either is not.
|
537
|
+
void JumpIfNotBothSequentialAsciiStrings(Register first,
|
538
|
+
Register second,
|
539
|
+
Register scratch1,
|
540
|
+
Register scratch2,
|
541
|
+
Label* not_flat_ascii_strings);
|
542
|
+
|
543
|
+
// Checks if both instance types are sequential ASCII strings and jumps to
|
544
|
+
// label if either is not.
|
545
|
+
void JumpIfBothInstanceTypesAreNotSequentialAscii(
|
546
|
+
Register first_object_instance_type,
|
547
|
+
Register second_object_instance_type,
|
548
|
+
Register scratch1,
|
549
|
+
Register scratch2,
|
550
|
+
Label* failure);
|
551
|
+
|
552
|
+
// Check if instance type is sequential ASCII string and jump to label if
|
553
|
+
// it is not.
|
554
|
+
void JumpIfInstanceTypeIsNotSequentialAscii(Register type,
|
555
|
+
Register scratch,
|
556
|
+
Label* failure);
|
557
|
+
|
558
|
+
|
340
559
|
private:
|
341
|
-
|
342
|
-
|
343
|
-
bool allow_stub_calls_;
|
344
|
-
Handle<Object> code_object_; // This handle will be patched with the code
|
345
|
-
// object on installation.
|
560
|
+
void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond = al);
|
561
|
+
void Call(intptr_t target, RelocInfo::Mode rmode, Condition cond = al);
|
346
562
|
|
347
563
|
// Helper functions for generating invokes.
|
348
564
|
void InvokePrologue(const ParameterCount& expected,
|
@@ -352,21 +568,20 @@ class MacroAssembler: public Assembler {
|
|
352
568
|
Label* done,
|
353
569
|
InvokeFlag flag);
|
354
570
|
|
355
|
-
// Prepares for a call or jump to a builtin by doing two things:
|
356
|
-
// 1. Emits code that fetches the builtin's function object from the context
|
357
|
-
// at runtime, and puts it in the register rdi.
|
358
|
-
// 2. Fetches the builtin's code object, and returns it in a handle, at
|
359
|
-
// compile time, so that later code can emit instructions to jump or call
|
360
|
-
// the builtin directly. If the code object has not yet been created, it
|
361
|
-
// returns the builtin code object for IllegalFunction, and sets the
|
362
|
-
// output parameter "resolved" to false. Code that uses the return value
|
363
|
-
// should then add the address and the builtin name to the list of fixups
|
364
|
-
// called unresolved_, which is fixed up by the bootstrapper.
|
365
|
-
Handle<Code> ResolveBuiltin(Builtins::JavaScript id, bool* resolved);
|
366
|
-
|
367
571
|
// Activation support.
|
368
572
|
void EnterFrame(StackFrame::Type type);
|
369
573
|
void LeaveFrame(StackFrame::Type type);
|
574
|
+
|
575
|
+
void InitializeNewString(Register string,
|
576
|
+
Register length,
|
577
|
+
Heap::RootListIndex map_index,
|
578
|
+
Register scratch1,
|
579
|
+
Register scratch2);
|
580
|
+
|
581
|
+
bool generating_stub_;
|
582
|
+
bool allow_stub_calls_;
|
583
|
+
// This handle will be patched with the code object on installation.
|
584
|
+
Handle<Object> code_object_;
|
370
585
|
};
|
371
586
|
|
372
587
|
|
@@ -402,12 +617,6 @@ class CodePatcher {
|
|
402
617
|
// -----------------------------------------------------------------------------
|
403
618
|
// Static helper functions.
|
404
619
|
|
405
|
-
// Generate a MemOperand for loading a field from an object.
|
406
|
-
static inline MemOperand FieldMemOperand(Register object, int offset) {
|
407
|
-
return MemOperand(object, offset - kHeapObjectTag);
|
408
|
-
}
|
409
|
-
|
410
|
-
|
411
620
|
#ifdef GENERATED_CODE_COVERAGE
|
412
621
|
#define CODE_COVERAGE_STRINGIFY(x) #x
|
413
622
|
#define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
|
@@ -39,7 +39,7 @@
|
|
39
39
|
namespace v8 {
|
40
40
|
namespace internal {
|
41
41
|
|
42
|
-
#
|
42
|
+
#ifndef V8_INTERPRETED_REGEXP
|
43
43
|
/*
|
44
44
|
* This assembler uses the following register assignment convention
|
45
45
|
* - r5 : Pointer to current code object (Code*) including heap object tag.
|
@@ -63,8 +63,6 @@ namespace internal {
|
|
63
63
|
* through the runtime system)
|
64
64
|
* - stack_area_base (High end of the memory area to use as
|
65
65
|
* backtracking stack)
|
66
|
-
* - at_start (if 1, we are starting at the start of the
|
67
|
-
* string, otherwise 0)
|
68
66
|
* - int* capture_array (int[num_saved_registers_], for output).
|
69
67
|
* --- sp when called ---
|
70
68
|
* - link address
|
@@ -76,6 +74,8 @@ namespace internal {
|
|
76
74
|
* - void* input_string (location of a handle containing the string)
|
77
75
|
* - Offset of location before start of input (effectively character
|
78
76
|
* position -1). Used to initialize capture registers to a non-position.
|
77
|
+
* - At start (if 1, we are starting at the start of the
|
78
|
+
* string, otherwise 0)
|
79
79
|
* - register 0 (Only positions must be stored in the first
|
80
80
|
* - register 1 num_saved_registers_ registers)
|
81
81
|
* - ...
|
@@ -163,7 +163,7 @@ void RegExpMacroAssemblerARM::Backtrack() {
|
|
163
163
|
CheckPreemption();
|
164
164
|
// Pop Code* offset from backtrack stack, add Code* and jump to location.
|
165
165
|
Pop(r0);
|
166
|
-
__ add(pc, r0, Operand(
|
166
|
+
__ add(pc, r0, Operand(code_pointer()));
|
167
167
|
}
|
168
168
|
|
169
169
|
|
@@ -338,7 +338,7 @@ void RegExpMacroAssemblerARM::CheckNotBackReferenceIgnoreCase(
|
|
338
338
|
} else {
|
339
339
|
ASSERT(mode_ == UC16);
|
340
340
|
int argument_count = 3;
|
341
|
-
|
341
|
+
__ PrepareCallCFunction(argument_count, r2);
|
342
342
|
|
343
343
|
// r0 - offset of start of capture
|
344
344
|
// r1 - length of capture
|
@@ -360,7 +360,7 @@ void RegExpMacroAssemblerARM::CheckNotBackReferenceIgnoreCase(
|
|
360
360
|
|
361
361
|
ExternalReference function =
|
362
362
|
ExternalReference::re_case_insensitive_compare_uc16();
|
363
|
-
CallCFunction(function, argument_count);
|
363
|
+
__ CallCFunction(function, argument_count);
|
364
364
|
|
365
365
|
// Check if function returned non-zero for success or zero for failure.
|
366
366
|
__ cmp(r0, Operand(0));
|
@@ -526,64 +526,54 @@ bool RegExpMacroAssemblerARM::CheckSpecialCharacterClass(uc16 type,
|
|
526
526
|
return true;
|
527
527
|
}
|
528
528
|
case 'n': {
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
}
|
547
|
-
return true;
|
529
|
+
// Match newlines (0x0a('\n'), 0x0d('\r'), 0x2028 and 0x2029)
|
530
|
+
__ eor(r0, current_character(), Operand(0x01));
|
531
|
+
// See if current character is '\n'^1 or '\r'^1, i.e., 0x0b or 0x0c
|
532
|
+
__ sub(r0, r0, Operand(0x0b));
|
533
|
+
__ cmp(r0, Operand(0x0c - 0x0b));
|
534
|
+
if (mode_ == ASCII) {
|
535
|
+
BranchOrBacktrack(hi, on_no_match);
|
536
|
+
} else {
|
537
|
+
Label done;
|
538
|
+
__ b(ls, &done);
|
539
|
+
// Compare original value to 0x2028 and 0x2029, using the already
|
540
|
+
// computed (current_char ^ 0x01 - 0x0b). I.e., check for
|
541
|
+
// 0x201d (0x2028 - 0x0b) or 0x201e.
|
542
|
+
__ sub(r0, r0, Operand(0x2028 - 0x0b));
|
543
|
+
__ cmp(r0, Operand(1));
|
544
|
+
BranchOrBacktrack(hi, on_no_match);
|
545
|
+
__ bind(&done);
|
548
546
|
}
|
547
|
+
return true;
|
548
|
+
}
|
549
549
|
case 'w': {
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
__
|
557
|
-
__
|
558
|
-
__
|
559
|
-
BranchOrBacktrack(
|
560
|
-
__ jmp(&done);
|
561
|
-
|
562
|
-
__ bind(&digits);
|
563
|
-
__ cmp(current_character(), Operand('0'));
|
564
|
-
BranchOrBacktrack(lo, on_no_match);
|
565
|
-
__ bind(&done);
|
566
|
-
|
550
|
+
if (mode_ != ASCII) {
|
551
|
+
// Table is 128 entries, so all ASCII characters can be tested.
|
552
|
+
__ cmp(current_character(), Operand('z'));
|
553
|
+
BranchOrBacktrack(hi, on_no_match);
|
554
|
+
}
|
555
|
+
ExternalReference map = ExternalReference::re_word_character_map();
|
556
|
+
__ mov(r0, Operand(map));
|
557
|
+
__ ldrb(r0, MemOperand(r0, current_character()));
|
558
|
+
__ tst(r0, Operand(r0));
|
559
|
+
BranchOrBacktrack(eq, on_no_match);
|
567
560
|
return true;
|
568
561
|
}
|
569
562
|
case 'W': {
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
__
|
578
|
-
__
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
BranchOrBacktrack(hs, on_no_match);
|
585
|
-
__ bind(&done);
|
586
|
-
|
563
|
+
Label done;
|
564
|
+
if (mode_ != ASCII) {
|
565
|
+
// Table is 128 entries, so all ASCII characters can be tested.
|
566
|
+
__ cmp(current_character(), Operand('z'));
|
567
|
+
__ b(hi, &done);
|
568
|
+
}
|
569
|
+
ExternalReference map = ExternalReference::re_word_character_map();
|
570
|
+
__ mov(r0, Operand(map));
|
571
|
+
__ ldrb(r0, MemOperand(r0, current_character()));
|
572
|
+
__ tst(r0, Operand(r0));
|
573
|
+
BranchOrBacktrack(ne, on_no_match);
|
574
|
+
if (mode_ != ASCII) {
|
575
|
+
__ bind(&done);
|
576
|
+
}
|
587
577
|
return true;
|
588
578
|
}
|
589
579
|
case '*':
|
@@ -620,7 +610,7 @@ Handle<Object> RegExpMacroAssemblerARM::GetCode(Handle<String> source) {
|
|
620
610
|
// Set frame pointer just above the arguments.
|
621
611
|
__ add(frame_pointer(), sp, Operand(4 * kPointerSize));
|
622
612
|
__ push(r0); // Make room for "position - 1" constant (value is irrelevant).
|
623
|
-
|
613
|
+
__ push(r0); // Make room for "at start" constant (value is irrelevant).
|
624
614
|
// Check if we have space on the stack for registers.
|
625
615
|
Label stack_limit_hit;
|
626
616
|
Label stack_ok;
|
@@ -657,12 +647,22 @@ Handle<Object> RegExpMacroAssemblerARM::GetCode(Handle<String> source) {
|
|
657
647
|
__ ldr(r0, MemOperand(frame_pointer(), kInputStart));
|
658
648
|
// Find negative length (offset of start relative to end).
|
659
649
|
__ sub(current_input_offset(), r0, end_of_input_address());
|
660
|
-
// Set r0 to address of char before start of input
|
650
|
+
// Set r0 to address of char before start of the input string
|
661
651
|
// (effectively string position -1).
|
652
|
+
__ ldr(r1, MemOperand(frame_pointer(), kStartIndex));
|
662
653
|
__ sub(r0, current_input_offset(), Operand(char_size()));
|
654
|
+
__ sub(r0, r0, Operand(r1, LSL, (mode_ == UC16) ? 1 : 0));
|
663
655
|
// Store this value in a local variable, for use when clearing
|
664
656
|
// position registers.
|
665
657
|
__ str(r0, MemOperand(frame_pointer(), kInputStartMinusOne));
|
658
|
+
|
659
|
+
// Determine whether the start index is zero, that is at the start of the
|
660
|
+
// string, and store that value in a local variable.
|
661
|
+
__ tst(r1, Operand(r1));
|
662
|
+
__ mov(r1, Operand(1), LeaveCC, eq);
|
663
|
+
__ mov(r1, Operand(0), LeaveCC, ne);
|
664
|
+
__ str(r1, MemOperand(frame_pointer(), kAtStart));
|
665
|
+
|
666
666
|
if (num_saved_registers_ > 0) { // Always is, if generated from a regexp.
|
667
667
|
// Fill saved registers with initial value = start offset - 1
|
668
668
|
|
@@ -700,12 +700,15 @@ Handle<Object> RegExpMacroAssemblerARM::GetCode(Handle<String> source) {
|
|
700
700
|
// copy captures to output
|
701
701
|
__ ldr(r1, MemOperand(frame_pointer(), kInputStart));
|
702
702
|
__ ldr(r0, MemOperand(frame_pointer(), kRegisterOutput));
|
703
|
+
__ ldr(r2, MemOperand(frame_pointer(), kStartIndex));
|
703
704
|
__ sub(r1, end_of_input_address(), r1);
|
704
705
|
// r1 is length of input in bytes.
|
705
706
|
if (mode_ == UC16) {
|
706
707
|
__ mov(r1, Operand(r1, LSR, 1));
|
707
708
|
}
|
708
709
|
// r1 is length of input in characters.
|
710
|
+
__ add(r1, r1, Operand(r2));
|
711
|
+
// r1 is length of string in characters.
|
709
712
|
|
710
713
|
ASSERT_EQ(0, num_saved_registers_ % 2);
|
711
714
|
// Always an even number of capture registers. This allows us to
|
@@ -765,13 +768,13 @@ Handle<Object> RegExpMacroAssemblerARM::GetCode(Handle<String> source) {
|
|
765
768
|
Label grow_failed;
|
766
769
|
|
767
770
|
// Call GrowStack(backtrack_stackpointer())
|
768
|
-
int num_arguments = 2;
|
769
|
-
|
771
|
+
static const int num_arguments = 2;
|
772
|
+
__ PrepareCallCFunction(num_arguments, r0);
|
770
773
|
__ mov(r0, backtrack_stackpointer());
|
771
774
|
__ add(r1, frame_pointer(), Operand(kStackHighEnd));
|
772
775
|
ExternalReference grow_stack =
|
773
776
|
ExternalReference::re_grow_stack();
|
774
|
-
CallCFunction(grow_stack, num_arguments);
|
777
|
+
__ CallCFunction(grow_stack, num_arguments);
|
775
778
|
// If return NULL, we have failed to grow the stack, and
|
776
779
|
// must exit with a stack-overflow exception.
|
777
780
|
__ cmp(r0, Operand(0));
|
@@ -796,7 +799,7 @@ Handle<Object> RegExpMacroAssemblerARM::GetCode(Handle<String> source) {
|
|
796
799
|
NULL,
|
797
800
|
Code::ComputeFlags(Code::REGEXP),
|
798
801
|
masm_->CodeObject());
|
799
|
-
|
802
|
+
PROFILE(RegExpCodeCreateEvent(*code, *source));
|
800
803
|
return Handle<Object>::cast(code);
|
801
804
|
}
|
802
805
|
|
@@ -966,8 +969,8 @@ void RegExpMacroAssemblerARM::WriteStackPointerToRegister(int reg) {
|
|
966
969
|
// Private methods:
|
967
970
|
|
968
971
|
void RegExpMacroAssemblerARM::CallCheckStackGuardState(Register scratch) {
|
969
|
-
int num_arguments = 3;
|
970
|
-
|
972
|
+
static const int num_arguments = 3;
|
973
|
+
__ PrepareCallCFunction(num_arguments, scratch);
|
971
974
|
// RegExp code frame pointer.
|
972
975
|
__ mov(r2, frame_pointer());
|
973
976
|
// Code* of self.
|
@@ -997,6 +1000,12 @@ int RegExpMacroAssemblerARM::CheckStackGuardState(Address* return_address,
|
|
997
1000
|
// If not real stack overflow the stack guard was used to interrupt
|
998
1001
|
// execution for another purpose.
|
999
1002
|
|
1003
|
+
// If this is a direct call from JavaScript retry the RegExp forcing the call
|
1004
|
+
// through the runtime system. Currently the direct call cannot handle a GC.
|
1005
|
+
if (frame_entry<int>(re_frame, kDirectCall) == 1) {
|
1006
|
+
return RETRY;
|
1007
|
+
}
|
1008
|
+
|
1000
1009
|
// Prepare for possible GC.
|
1001
1010
|
HandleScope handles;
|
1002
1011
|
Handle<Code> code_handle(re_code);
|
@@ -1179,47 +1188,12 @@ int RegExpMacroAssemblerARM::GetBacktrackConstantPoolEntry() {
|
|
1179
1188
|
}
|
1180
1189
|
|
1181
1190
|
|
1182
|
-
void RegExpMacroAssemblerARM::FrameAlign(int num_arguments, Register scratch) {
|
1183
|
-
int frameAlignment = OS::ActivationFrameAlignment();
|
1184
|
-
// Up to four simple arguments are passed in registers r0..r3.
|
1185
|
-
int stack_passed_arguments = (num_arguments <= 4) ? 0 : num_arguments - 4;
|
1186
|
-
if (frameAlignment != 0) {
|
1187
|
-
// Make stack end at alignment and make room for num_arguments - 4 words
|
1188
|
-
// and the original value of sp.
|
1189
|
-
__ mov(scratch, sp);
|
1190
|
-
__ sub(sp, sp, Operand((stack_passed_arguments + 1) * kPointerSize));
|
1191
|
-
ASSERT(IsPowerOf2(frameAlignment));
|
1192
|
-
__ and_(sp, sp, Operand(-frameAlignment));
|
1193
|
-
__ str(scratch, MemOperand(sp, stack_passed_arguments * kPointerSize));
|
1194
|
-
} else {
|
1195
|
-
__ sub(sp, sp, Operand(stack_passed_arguments * kPointerSize));
|
1196
|
-
}
|
1197
|
-
}
|
1198
|
-
|
1199
|
-
|
1200
|
-
void RegExpMacroAssemblerARM::CallCFunction(ExternalReference function,
|
1201
|
-
int num_arguments) {
|
1202
|
-
__ mov(r5, Operand(function));
|
1203
|
-
// Just call directly. The function called cannot cause a GC, or
|
1204
|
-
// allow preemption, so the return address in the link register
|
1205
|
-
// stays correct.
|
1206
|
-
__ Call(r5);
|
1207
|
-
int stack_passed_arguments = (num_arguments <= 4) ? 0 : num_arguments - 4;
|
1208
|
-
if (OS::ActivationFrameAlignment() > kIntSize) {
|
1209
|
-
__ ldr(sp, MemOperand(sp, stack_passed_arguments * kPointerSize));
|
1210
|
-
} else {
|
1211
|
-
__ add(sp, sp, Operand(stack_passed_arguments * sizeof(kPointerSize)));
|
1212
|
-
}
|
1213
|
-
__ mov(code_pointer(), Operand(masm_->CodeObject()));
|
1214
|
-
}
|
1215
|
-
|
1216
|
-
|
1217
1191
|
void RegExpMacroAssemblerARM::CallCFunctionUsingStub(
|
1218
1192
|
ExternalReference function,
|
1219
1193
|
int num_arguments) {
|
1220
1194
|
// Must pass all arguments in registers. The stub pushes on the stack.
|
1221
1195
|
ASSERT(num_arguments <= 4);
|
1222
|
-
__ mov(
|
1196
|
+
__ mov(code_pointer(), Operand(function));
|
1223
1197
|
RegExpCEntryStub stub;
|
1224
1198
|
__ CallStub(&stub);
|
1225
1199
|
if (OS::ActivationFrameAlignment() != 0) {
|
@@ -1261,6 +1235,6 @@ void RegExpCEntryStub::Generate(MacroAssembler* masm_) {
|
|
1261
1235
|
|
1262
1236
|
#undef __
|
1263
1237
|
|
1264
|
-
#endif //
|
1238
|
+
#endif // V8_INTERPRETED_REGEXP
|
1265
1239
|
|
1266
1240
|
}} // namespace v8::internal
|