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
@@ -45,6 +45,7 @@ enum DictionaryCheck { CHECK_DICTIONARY, DICTIONARY_CHECK_DONE };
|
|
45
45
|
ICU(KeyedLoadIC_Miss) \
|
46
46
|
ICU(CallIC_Miss) \
|
47
47
|
ICU(StoreIC_Miss) \
|
48
|
+
ICU(StoreIC_ArrayLength) \
|
48
49
|
ICU(SharedStoreIC_ExtendStorage) \
|
49
50
|
ICU(KeyedStoreIC_Miss) \
|
50
51
|
/* Utilities for IC stubs. */ \
|
@@ -53,7 +54,9 @@ enum DictionaryCheck { CHECK_DICTIONARY, DICTIONARY_CHECK_DONE };
|
|
53
54
|
ICU(LoadPropertyWithInterceptorOnly) \
|
54
55
|
ICU(LoadPropertyWithInterceptorForLoad) \
|
55
56
|
ICU(LoadPropertyWithInterceptorForCall) \
|
56
|
-
ICU(
|
57
|
+
ICU(KeyedLoadPropertyWithInterceptor) \
|
58
|
+
ICU(StoreInterceptorProperty) \
|
59
|
+
ICU(BinaryOp_Patch)
|
57
60
|
|
58
61
|
//
|
59
62
|
// IC is the base class for LoadIC, StoreIC, CallIC, KeyedLoadIC,
|
@@ -91,8 +94,8 @@ class IC {
|
|
91
94
|
Code* target() { return GetTargetAtAddress(address()); }
|
92
95
|
inline Address address();
|
93
96
|
|
94
|
-
// Compute the current IC state based on the target stub and
|
95
|
-
static State StateFrom(Code* target, Object* receiver);
|
97
|
+
// Compute the current IC state based on the target stub, receiver and name.
|
98
|
+
static State StateFrom(Code* target, Object* receiver, Object* name);
|
96
99
|
|
97
100
|
// Clear the inline cache to initial state.
|
98
101
|
static void Clear(Address address);
|
@@ -209,6 +212,8 @@ class CallIC: public IC {
|
|
209
212
|
// Otherwise, it returns the undefined value.
|
210
213
|
Object* TryCallAsFunction(Object* object);
|
211
214
|
|
215
|
+
void ReceiverToObject(Handle<Object> object);
|
216
|
+
|
212
217
|
static void Clear(Address address, Code* target);
|
213
218
|
friend class IC;
|
214
219
|
};
|
@@ -221,8 +226,10 @@ class LoadIC: public IC {
|
|
221
226
|
Object* Load(State state, Handle<Object> object, Handle<String> name);
|
222
227
|
|
223
228
|
// Code generator routines.
|
224
|
-
static void GenerateInitialize(MacroAssembler* masm);
|
225
|
-
static void GeneratePreMonomorphic(MacroAssembler* masm)
|
229
|
+
static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); }
|
230
|
+
static void GeneratePreMonomorphic(MacroAssembler* masm) {
|
231
|
+
GenerateMiss(masm);
|
232
|
+
}
|
226
233
|
static void GenerateMiss(MacroAssembler* masm);
|
227
234
|
static void GenerateMegamorphic(MacroAssembler* masm);
|
228
235
|
static void GenerateNormal(MacroAssembler* masm);
|
@@ -238,8 +245,6 @@ class LoadIC: public IC {
|
|
238
245
|
static const int kOffsetToLoadInstruction;
|
239
246
|
|
240
247
|
private:
|
241
|
-
static void Generate(MacroAssembler* masm, const ExternalReference& f);
|
242
|
-
|
243
248
|
// Update the inline cache and the global stub cache based on the
|
244
249
|
// lookup result.
|
245
250
|
void UpdateCaches(LookupResult* lookup,
|
@@ -277,8 +282,11 @@ class KeyedLoadIC: public IC {
|
|
277
282
|
|
278
283
|
// Code generator routines.
|
279
284
|
static void GenerateMiss(MacroAssembler* masm);
|
280
|
-
static void
|
281
|
-
static void
|
285
|
+
static void GenerateRuntimeGetProperty(MacroAssembler* masm);
|
286
|
+
static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); }
|
287
|
+
static void GeneratePreMonomorphic(MacroAssembler* masm) {
|
288
|
+
GenerateMiss(masm);
|
289
|
+
}
|
282
290
|
static void GenerateGeneric(MacroAssembler* masm);
|
283
291
|
static void GenerateString(MacroAssembler* masm);
|
284
292
|
|
@@ -288,11 +296,11 @@ class KeyedLoadIC: public IC {
|
|
288
296
|
// for all other types.
|
289
297
|
static void GenerateExternalArray(MacroAssembler* masm,
|
290
298
|
ExternalArrayType array_type);
|
299
|
+
static void GenerateIndexedInterceptor(MacroAssembler* masm);
|
291
300
|
|
292
301
|
// Clear the use of the inlined version.
|
293
302
|
static void ClearInlinedVersion(Address address);
|
294
303
|
|
295
|
-
private:
|
296
304
|
// Bit mask to be tested against bit field for the cases when
|
297
305
|
// generic stub should go into slow case.
|
298
306
|
// Access check is necessary explicitly since generic stub does not perform
|
@@ -300,8 +308,7 @@ class KeyedLoadIC: public IC {
|
|
300
308
|
static const int kSlowCaseBitFieldMask =
|
301
309
|
(1 << Map::kIsAccessCheckNeeded) | (1 << Map::kHasIndexedInterceptor);
|
302
310
|
|
303
|
-
|
304
|
-
|
311
|
+
private:
|
305
312
|
// Update the inline cache.
|
306
313
|
void UpdateCaches(LookupResult* lookup,
|
307
314
|
State state,
|
@@ -326,6 +333,10 @@ class KeyedLoadIC: public IC {
|
|
326
333
|
}
|
327
334
|
static Code* external_array_stub(JSObject::ElementsKind elements_kind);
|
328
335
|
|
336
|
+
static Code* indexed_interceptor_stub() {
|
337
|
+
return Builtins::builtin(Builtins::KeyedLoadIC_IndexedInterceptor);
|
338
|
+
}
|
339
|
+
|
329
340
|
static void Clear(Address address, Code* target);
|
330
341
|
|
331
342
|
// Support for patching the map that is checked in an inlined
|
@@ -346,14 +357,12 @@ class StoreIC: public IC {
|
|
346
357
|
Handle<Object> value);
|
347
358
|
|
348
359
|
// Code generators for stub routines. Only called once at startup.
|
349
|
-
static void GenerateInitialize(MacroAssembler* masm);
|
360
|
+
static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); }
|
350
361
|
static void GenerateMiss(MacroAssembler* masm);
|
351
362
|
static void GenerateMegamorphic(MacroAssembler* masm);
|
352
|
-
static void
|
363
|
+
static void GenerateArrayLength(MacroAssembler* masm);
|
353
364
|
|
354
365
|
private:
|
355
|
-
static void Generate(MacroAssembler* masm, const ExternalReference& f);
|
356
|
-
|
357
366
|
// Update the inline cache and the global stub cache based on the
|
358
367
|
// lookup result.
|
359
368
|
void UpdateCaches(LookupResult* lookup,
|
@@ -384,10 +393,10 @@ class KeyedStoreIC: public IC {
|
|
384
393
|
Handle<Object> value);
|
385
394
|
|
386
395
|
// Code generators for stub routines. Only called once at startup.
|
387
|
-
static void GenerateInitialize(MacroAssembler* masm);
|
396
|
+
static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); }
|
388
397
|
static void GenerateMiss(MacroAssembler* masm);
|
398
|
+
static void GenerateRuntimeSetProperty(MacroAssembler* masm);
|
389
399
|
static void GenerateGeneric(MacroAssembler* masm);
|
390
|
-
static void GenerateExtendStorage(MacroAssembler* masm);
|
391
400
|
|
392
401
|
// Generators for external array types. See objects.h.
|
393
402
|
// These are similar to the generic IC; they optimize the case of
|
@@ -403,8 +412,6 @@ class KeyedStoreIC: public IC {
|
|
403
412
|
static void RestoreInlinedVersion(Address address);
|
404
413
|
|
405
414
|
private:
|
406
|
-
static void Generate(MacroAssembler* masm, const ExternalReference& f);
|
407
|
-
|
408
415
|
// Update the inline cache.
|
409
416
|
void UpdateCaches(LookupResult* lookup,
|
410
417
|
State state,
|
@@ -438,6 +445,30 @@ class KeyedStoreIC: public IC {
|
|
438
445
|
};
|
439
446
|
|
440
447
|
|
448
|
+
class BinaryOpIC: public IC {
|
449
|
+
public:
|
450
|
+
|
451
|
+
enum TypeInfo {
|
452
|
+
DEFAULT, // Initial state. When first executed, patches to one
|
453
|
+
// of the following states depending on the operands types.
|
454
|
+
HEAP_NUMBERS, // Both arguments are HeapNumbers.
|
455
|
+
STRINGS, // At least one of the arguments is String.
|
456
|
+
GENERIC // Non-specialized case (processes any type combination).
|
457
|
+
};
|
458
|
+
|
459
|
+
BinaryOpIC() : IC(NO_EXTRA_FRAME) { }
|
460
|
+
|
461
|
+
void patch(Code* code);
|
462
|
+
|
463
|
+
static void Clear(Address address, Code* target);
|
464
|
+
|
465
|
+
static const char* GetName(TypeInfo type_info);
|
466
|
+
|
467
|
+
static State ToState(TypeInfo type_info);
|
468
|
+
|
469
|
+
static TypeInfo GetTypeInfo(Object* left, Object* right);
|
470
|
+
};
|
471
|
+
|
441
472
|
} } // namespace v8::internal
|
442
473
|
|
443
474
|
#endif // V8_IC_H_
|
File without changes
|
File without changes
|
@@ -29,7 +29,7 @@ var $JSON = global.JSON;
|
|
29
29
|
|
30
30
|
function ParseJSONUnfiltered(text) {
|
31
31
|
var s = $String(text);
|
32
|
-
var f = %CompileString(
|
32
|
+
var f = %CompileString(text, true);
|
33
33
|
return f();
|
34
34
|
}
|
35
35
|
|
@@ -80,8 +80,9 @@ var characterQuoteCache = {
|
|
80
80
|
};
|
81
81
|
|
82
82
|
function QuoteSingleJSONCharacter(c) {
|
83
|
-
if (c in characterQuoteCache)
|
83
|
+
if (c in characterQuoteCache) {
|
84
84
|
return characterQuoteCache[c];
|
85
|
+
}
|
85
86
|
var charCode = c.charCodeAt(0);
|
86
87
|
var result;
|
87
88
|
if (charCode < 16) result = '\\u000';
|
@@ -101,15 +102,17 @@ function QuoteJSONString(str) {
|
|
101
102
|
function StackContains(stack, val) {
|
102
103
|
var length = stack.length;
|
103
104
|
for (var i = 0; i < length; i++) {
|
104
|
-
if (stack[i] === val)
|
105
|
+
if (stack[i] === val) {
|
105
106
|
return true;
|
107
|
+
}
|
106
108
|
}
|
107
109
|
return false;
|
108
110
|
}
|
109
111
|
|
110
112
|
function SerializeArray(value, replacer, stack, indent, gap) {
|
111
|
-
if (StackContains(stack, value))
|
113
|
+
if (StackContains(stack, value)) {
|
112
114
|
throw MakeTypeError('circular_structure', []);
|
115
|
+
}
|
113
116
|
stack.push(value);
|
114
117
|
var stepback = indent;
|
115
118
|
indent += gap;
|
@@ -117,9 +120,10 @@ function SerializeArray(value, replacer, stack, indent, gap) {
|
|
117
120
|
var len = value.length;
|
118
121
|
for (var i = 0; i < len; i++) {
|
119
122
|
var strP = JSONSerialize($String(i), value, replacer, stack,
|
120
|
-
|
121
|
-
if (IS_UNDEFINED(strP))
|
123
|
+
indent, gap);
|
124
|
+
if (IS_UNDEFINED(strP)) {
|
122
125
|
strP = "null";
|
126
|
+
}
|
123
127
|
partial.push(strP);
|
124
128
|
}
|
125
129
|
var final;
|
@@ -137,8 +141,9 @@ function SerializeArray(value, replacer, stack, indent, gap) {
|
|
137
141
|
}
|
138
142
|
|
139
143
|
function SerializeObject(value, replacer, stack, indent, gap) {
|
140
|
-
if (StackContains(stack, value))
|
144
|
+
if (StackContains(stack, value)) {
|
141
145
|
throw MakeTypeError('circular_structure', []);
|
146
|
+
}
|
142
147
|
stack.push(value);
|
143
148
|
var stepback = indent;
|
144
149
|
indent += gap;
|
@@ -188,17 +193,21 @@ function JSONSerialize(key, holder, replacer, stack, indent, gap) {
|
|
188
193
|
var value = holder[key];
|
189
194
|
if (IS_OBJECT(value) && value) {
|
190
195
|
var toJSON = value.toJSON;
|
191
|
-
if (IS_FUNCTION(toJSON))
|
196
|
+
if (IS_FUNCTION(toJSON)) {
|
192
197
|
value = toJSON.call(value, key);
|
198
|
+
}
|
193
199
|
}
|
194
|
-
if (IS_FUNCTION(replacer))
|
200
|
+
if (IS_FUNCTION(replacer)) {
|
195
201
|
value = replacer.call(holder, key, value);
|
202
|
+
}
|
196
203
|
// Unwrap value if necessary
|
197
204
|
if (IS_OBJECT(value)) {
|
198
205
|
if (IS_NUMBER_WRAPPER(value)) {
|
199
206
|
value = $Number(value);
|
200
207
|
} else if (IS_STRING_WRAPPER(value)) {
|
201
208
|
value = $String(value);
|
209
|
+
} else if (IS_BOOLEAN_WRAPPER(value)) {
|
210
|
+
value = $Boolean(value);
|
202
211
|
}
|
203
212
|
}
|
204
213
|
switch (typeof value) {
|
@@ -232,12 +241,17 @@ function JSONStringify(value, replacer, space) {
|
|
232
241
|
}
|
233
242
|
var gap;
|
234
243
|
if (IS_NUMBER(space)) {
|
235
|
-
space = $Math.min(space,
|
244
|
+
space = $Math.min(space, 10);
|
236
245
|
gap = "";
|
237
|
-
for (var i = 0; i < space; i++)
|
246
|
+
for (var i = 0; i < space; i++) {
|
238
247
|
gap += " ";
|
248
|
+
}
|
239
249
|
} else if (IS_STRING(space)) {
|
240
|
-
|
250
|
+
if (space.length > 10) {
|
251
|
+
gap = space.substring(0, 10);
|
252
|
+
} else {
|
253
|
+
gap = space;
|
254
|
+
}
|
241
255
|
} else {
|
242
256
|
gap = "";
|
243
257
|
}
|
@@ -43,7 +43,7 @@
|
|
43
43
|
#include "regexp-macro-assembler-irregexp.h"
|
44
44
|
#include "regexp-stack.h"
|
45
45
|
|
46
|
-
#
|
46
|
+
#ifndef V8_INTERPRETED_REGEXP
|
47
47
|
#if V8_TARGET_ARCH_IA32
|
48
48
|
#include "ia32/regexp-macro-assembler-ia32.h"
|
49
49
|
#elif V8_TARGET_ARCH_X64
|
@@ -66,11 +66,6 @@ Handle<Object> RegExpImpl::CreateRegExpLiteral(Handle<JSFunction> constructor,
|
|
66
66
|
Handle<String> pattern,
|
67
67
|
Handle<String> flags,
|
68
68
|
bool* has_pending_exception) {
|
69
|
-
// Ensure that the constructor function has been loaded.
|
70
|
-
if (!constructor->IsLoaded()) {
|
71
|
-
LoadLazy(constructor, has_pending_exception);
|
72
|
-
if (*has_pending_exception) return Handle<Object>();
|
73
|
-
}
|
74
69
|
// Call the construct code with 2 arguments.
|
75
70
|
Object** argv[2] = { Handle<Object>::cast(pattern).location(),
|
76
71
|
Handle<Object>::cast(flags).location() };
|
@@ -127,6 +122,7 @@ Handle<Object> RegExpImpl::Compile(Handle<JSRegExp> re,
|
|
127
122
|
}
|
128
123
|
FlattenString(pattern);
|
129
124
|
CompilationZoneScope zone_scope(DELETE_ON_EXIT);
|
125
|
+
PostponeInterruptsScope postpone;
|
130
126
|
RegExpCompileData parse_result;
|
131
127
|
FlatStringReader reader(pattern);
|
132
128
|
if (!ParseRegExp(&reader, flags.is_multiline(), &parse_result)) {
|
@@ -149,7 +145,7 @@ Handle<Object> RegExpImpl::Compile(Handle<JSRegExp> re,
|
|
149
145
|
Handle<String> atom_string = Factory::NewStringFromTwoByte(atom_pattern);
|
150
146
|
AtomCompile(re, pattern, flags, atom_string);
|
151
147
|
} else {
|
152
|
-
|
148
|
+
IrregexpInitialize(re, pattern, flags, parse_result.capture_count);
|
153
149
|
}
|
154
150
|
ASSERT(re->data()->IsFixedArray());
|
155
151
|
// Compilation succeeded so the data is set on the regexp
|
@@ -240,10 +236,10 @@ Handle<Object> RegExpImpl::AtomExec(Handle<JSRegExp> re,
|
|
240
236
|
// returns false.
|
241
237
|
bool RegExpImpl::EnsureCompiledIrregexp(Handle<JSRegExp> re, bool is_ascii) {
|
242
238
|
Object* compiled_code = re->DataAt(JSRegExp::code_index(is_ascii));
|
243
|
-
#ifdef
|
244
|
-
if (compiled_code->IsCode()) return true;
|
245
|
-
#else // ! V8_NATIVE_REGEXP (RegExp interpreter code)
|
239
|
+
#ifdef V8_INTERPRETED_REGEXP
|
246
240
|
if (compiled_code->IsByteArray()) return true;
|
241
|
+
#else // V8_INTERPRETED_REGEXP (RegExp native code)
|
242
|
+
if (compiled_code->IsCode()) return true;
|
247
243
|
#endif
|
248
244
|
return CompileIrregexp(re, is_ascii);
|
249
245
|
}
|
@@ -252,6 +248,7 @@ bool RegExpImpl::EnsureCompiledIrregexp(Handle<JSRegExp> re, bool is_ascii) {
|
|
252
248
|
bool RegExpImpl::CompileIrregexp(Handle<JSRegExp> re, bool is_ascii) {
|
253
249
|
// Compile the RegExp.
|
254
250
|
CompilationZoneScope zone_scope(DELETE_ON_EXIT);
|
251
|
+
PostponeInterruptsScope postpone;
|
255
252
|
Object* entry = re->DataAt(JSRegExp::code_index(is_ascii));
|
256
253
|
if (entry->IsJSObject()) {
|
257
254
|
// If it's a JSObject, a previous compilation failed and threw this object.
|
@@ -341,10 +338,10 @@ Code* RegExpImpl::IrregexpNativeCode(FixedArray* re, bool is_ascii) {
|
|
341
338
|
}
|
342
339
|
|
343
340
|
|
344
|
-
void RegExpImpl::
|
345
|
-
|
346
|
-
|
347
|
-
|
341
|
+
void RegExpImpl::IrregexpInitialize(Handle<JSRegExp> re,
|
342
|
+
Handle<String> pattern,
|
343
|
+
JSRegExp::Flags flags,
|
344
|
+
int capture_count) {
|
348
345
|
// Initialize compiled code entries to null.
|
349
346
|
Factory::SetRegExpIrregexpData(re,
|
350
347
|
JSRegExp::IRREGEXP,
|
@@ -354,6 +351,94 @@ void RegExpImpl::IrregexpPrepare(Handle<JSRegExp> re,
|
|
354
351
|
}
|
355
352
|
|
356
353
|
|
354
|
+
int RegExpImpl::IrregexpPrepare(Handle<JSRegExp> regexp,
|
355
|
+
Handle<String> subject) {
|
356
|
+
if (!subject->IsFlat()) {
|
357
|
+
FlattenString(subject);
|
358
|
+
}
|
359
|
+
bool is_ascii = subject->IsAsciiRepresentation();
|
360
|
+
if (!EnsureCompiledIrregexp(regexp, is_ascii)) {
|
361
|
+
return -1;
|
362
|
+
}
|
363
|
+
#ifdef V8_INTERPRETED_REGEXP
|
364
|
+
// Byte-code regexp needs space allocated for all its registers.
|
365
|
+
return IrregexpNumberOfRegisters(FixedArray::cast(regexp->data()));
|
366
|
+
#else // V8_INTERPRETED_REGEXP
|
367
|
+
// Native regexp only needs room to output captures. Registers are handled
|
368
|
+
// internally.
|
369
|
+
return (IrregexpNumberOfCaptures(FixedArray::cast(regexp->data())) + 1) * 2;
|
370
|
+
#endif // V8_INTERPRETED_REGEXP
|
371
|
+
}
|
372
|
+
|
373
|
+
|
374
|
+
RegExpImpl::IrregexpResult RegExpImpl::IrregexpExecOnce(Handle<JSRegExp> regexp,
|
375
|
+
Handle<String> subject,
|
376
|
+
int index,
|
377
|
+
Vector<int> output) {
|
378
|
+
Handle<FixedArray> irregexp(FixedArray::cast(regexp->data()));
|
379
|
+
|
380
|
+
ASSERT(index >= 0);
|
381
|
+
ASSERT(index <= subject->length());
|
382
|
+
ASSERT(subject->IsFlat());
|
383
|
+
|
384
|
+
#ifndef V8_INTERPRETED_REGEXP
|
385
|
+
ASSERT(output.length() >=
|
386
|
+
(IrregexpNumberOfCaptures(*irregexp) + 1) * 2);
|
387
|
+
do {
|
388
|
+
bool is_ascii = subject->IsAsciiRepresentation();
|
389
|
+
Handle<Code> code(IrregexpNativeCode(*irregexp, is_ascii));
|
390
|
+
NativeRegExpMacroAssembler::Result res =
|
391
|
+
NativeRegExpMacroAssembler::Match(code,
|
392
|
+
subject,
|
393
|
+
output.start(),
|
394
|
+
output.length(),
|
395
|
+
index);
|
396
|
+
if (res != NativeRegExpMacroAssembler::RETRY) {
|
397
|
+
ASSERT(res != NativeRegExpMacroAssembler::EXCEPTION ||
|
398
|
+
Top::has_pending_exception());
|
399
|
+
STATIC_ASSERT(
|
400
|
+
static_cast<int>(NativeRegExpMacroAssembler::SUCCESS) == RE_SUCCESS);
|
401
|
+
STATIC_ASSERT(
|
402
|
+
static_cast<int>(NativeRegExpMacroAssembler::FAILURE) == RE_FAILURE);
|
403
|
+
STATIC_ASSERT(static_cast<int>(NativeRegExpMacroAssembler::EXCEPTION)
|
404
|
+
== RE_EXCEPTION);
|
405
|
+
return static_cast<IrregexpResult>(res);
|
406
|
+
}
|
407
|
+
// If result is RETRY, the string has changed representation, and we
|
408
|
+
// must restart from scratch.
|
409
|
+
// In this case, it means we must make sure we are prepared to handle
|
410
|
+
// the, potentially, differen subject (the string can switch between
|
411
|
+
// being internal and external, and even between being ASCII and UC16,
|
412
|
+
// but the characters are always the same).
|
413
|
+
IrregexpPrepare(regexp, subject);
|
414
|
+
} while (true);
|
415
|
+
UNREACHABLE();
|
416
|
+
return RE_EXCEPTION;
|
417
|
+
#else // V8_INTERPRETED_REGEXP
|
418
|
+
|
419
|
+
ASSERT(output.length() >= IrregexpNumberOfRegisters(*irregexp));
|
420
|
+
bool is_ascii = subject->IsAsciiRepresentation();
|
421
|
+
// We must have done EnsureCompiledIrregexp, so we can get the number of
|
422
|
+
// registers.
|
423
|
+
int* register_vector = output.start();
|
424
|
+
int number_of_capture_registers =
|
425
|
+
(IrregexpNumberOfCaptures(*irregexp) + 1) * 2;
|
426
|
+
for (int i = number_of_capture_registers - 1; i >= 0; i--) {
|
427
|
+
register_vector[i] = -1;
|
428
|
+
}
|
429
|
+
Handle<ByteArray> byte_codes(IrregexpByteCode(*irregexp, is_ascii));
|
430
|
+
|
431
|
+
if (IrregexpInterpreter::Match(byte_codes,
|
432
|
+
subject,
|
433
|
+
register_vector,
|
434
|
+
index)) {
|
435
|
+
return RE_SUCCESS;
|
436
|
+
}
|
437
|
+
return RE_FAILURE;
|
438
|
+
#endif // V8_INTERPRETED_REGEXP
|
439
|
+
}
|
440
|
+
|
441
|
+
|
357
442
|
Handle<Object> RegExpImpl::IrregexpExec(Handle<JSRegExp> jsregexp,
|
358
443
|
Handle<String> subject,
|
359
444
|
int previous_index,
|
@@ -361,10 +446,7 @@ Handle<Object> RegExpImpl::IrregexpExec(Handle<JSRegExp> jsregexp,
|
|
361
446
|
ASSERT_EQ(jsregexp->TypeTag(), JSRegExp::IRREGEXP);
|
362
447
|
|
363
448
|
// Prepare space for the return values.
|
364
|
-
|
365
|
-
(IrregexpNumberOfCaptures(FixedArray::cast(jsregexp->data())) + 1) * 2;
|
366
|
-
|
367
|
-
#ifndef V8_NATIVE_REGEXP
|
449
|
+
#ifdef V8_INTERPRETED_REGEXP
|
368
450
|
#ifdef DEBUG
|
369
451
|
if (FLAG_trace_regexp_bytecodes) {
|
370
452
|
String* pattern = jsregexp->Pattern();
|
@@ -373,101 +455,42 @@ Handle<Object> RegExpImpl::IrregexpExec(Handle<JSRegExp> jsregexp,
|
|
373
455
|
}
|
374
456
|
#endif
|
375
457
|
#endif
|
376
|
-
|
377
|
-
if (
|
378
|
-
|
379
|
-
}
|
380
|
-
|
381
|
-
last_match_info->EnsureSize(number_of_capture_registers + kLastMatchOverhead);
|
382
|
-
|
383
|
-
Handle<FixedArray> array;
|
384
|
-
|
385
|
-
// Dispatch to the correct RegExp implementation.
|
386
|
-
Handle<FixedArray> regexp(FixedArray::cast(jsregexp->data()));
|
387
|
-
|
388
|
-
#ifdef V8_NATIVE_REGEXP
|
389
|
-
|
390
|
-
OffsetsVector captures(number_of_capture_registers);
|
391
|
-
int* captures_vector = captures.vector();
|
392
|
-
NativeRegExpMacroAssembler::Result res;
|
393
|
-
do {
|
394
|
-
bool is_ascii = subject->IsAsciiRepresentation();
|
395
|
-
if (!EnsureCompiledIrregexp(jsregexp, is_ascii)) {
|
396
|
-
return Handle<Object>::null();
|
397
|
-
}
|
398
|
-
Handle<Code> code(RegExpImpl::IrregexpNativeCode(*regexp, is_ascii));
|
399
|
-
res = NativeRegExpMacroAssembler::Match(code,
|
400
|
-
subject,
|
401
|
-
captures_vector,
|
402
|
-
captures.length(),
|
403
|
-
previous_index);
|
404
|
-
// If result is RETRY, the string have changed representation, and we
|
405
|
-
// must restart from scratch.
|
406
|
-
} while (res == NativeRegExpMacroAssembler::RETRY);
|
407
|
-
if (res == NativeRegExpMacroAssembler::EXCEPTION) {
|
458
|
+
int required_registers = RegExpImpl::IrregexpPrepare(jsregexp, subject);
|
459
|
+
if (required_registers < 0) {
|
460
|
+
// Compiling failed with an exception.
|
408
461
|
ASSERT(Top::has_pending_exception());
|
409
462
|
return Handle<Object>::null();
|
410
463
|
}
|
411
|
-
ASSERT(res == NativeRegExpMacroAssembler::SUCCESS
|
412
|
-
|| res == NativeRegExpMacroAssembler::FAILURE);
|
413
464
|
|
414
|
-
|
465
|
+
OffsetsVector registers(required_registers);
|
415
466
|
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
467
|
+
IrregexpResult res = IrregexpExecOnce(jsregexp,
|
468
|
+
subject,
|
469
|
+
previous_index,
|
470
|
+
Vector<int>(registers.vector(),
|
471
|
+
registers.length()));
|
472
|
+
if (res == RE_SUCCESS) {
|
473
|
+
int capture_register_count =
|
474
|
+
(IrregexpNumberOfCaptures(FixedArray::cast(jsregexp->data())) + 1) * 2;
|
475
|
+
last_match_info->EnsureSize(capture_register_count + kLastMatchOverhead);
|
476
|
+
AssertNoAllocation no_gc;
|
477
|
+
int* register_vector = registers.vector();
|
478
|
+
FixedArray* array = FixedArray::cast(last_match_info->elements());
|
479
|
+
for (int i = 0; i < capture_register_count; i += 2) {
|
480
|
+
SetCapture(array, i, register_vector[i]);
|
481
|
+
SetCapture(array, i + 1, register_vector[i + 1]);
|
427
482
|
}
|
428
|
-
|
429
|
-
|
483
|
+
SetLastCaptureCount(array, capture_register_count);
|
484
|
+
SetLastSubject(array, *subject);
|
485
|
+
SetLastInput(array, *subject);
|
486
|
+
return last_match_info;
|
430
487
|
}
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
bool is_ascii = subject->IsAsciiRepresentation();
|
435
|
-
if (!EnsureCompiledIrregexp(jsregexp, is_ascii)) {
|
488
|
+
if (res == RE_EXCEPTION) {
|
489
|
+
ASSERT(Top::has_pending_exception());
|
436
490
|
return Handle<Object>::null();
|
437
491
|
}
|
438
|
-
|
439
|
-
|
440
|
-
int number_of_registers =
|
441
|
-
IrregexpNumberOfRegisters(FixedArray::cast(jsregexp->data()));
|
442
|
-
OffsetsVector registers(number_of_registers);
|
443
|
-
int* register_vector = registers.vector();
|
444
|
-
for (int i = number_of_capture_registers - 1; i >= 0; i--) {
|
445
|
-
register_vector[i] = -1;
|
446
|
-
}
|
447
|
-
Handle<ByteArray> byte_codes(IrregexpByteCode(*regexp, is_ascii));
|
448
|
-
|
449
|
-
if (!IrregexpInterpreter::Match(byte_codes,
|
450
|
-
subject,
|
451
|
-
register_vector,
|
452
|
-
previous_index)) {
|
453
|
-
return Factory::null_value();
|
454
|
-
}
|
455
|
-
|
456
|
-
array = Handle<FixedArray>(FixedArray::cast(last_match_info->elements()));
|
457
|
-
ASSERT(array->length() >= number_of_capture_registers + kLastMatchOverhead);
|
458
|
-
// The captures come in (start, end+1) pairs.
|
459
|
-
for (int i = 0; i < number_of_capture_registers; i += 2) {
|
460
|
-
SetCapture(*array, i, register_vector[i]);
|
461
|
-
SetCapture(*array, i + 1, register_vector[i + 1]);
|
462
|
-
}
|
463
|
-
|
464
|
-
#endif // V8_NATIVE_REGEXP
|
465
|
-
|
466
|
-
SetLastCaptureCount(*array, number_of_capture_registers);
|
467
|
-
SetLastSubject(*array, *subject);
|
468
|
-
SetLastInput(*array, *subject);
|
469
|
-
|
470
|
-
return last_match_info;
|
492
|
+
ASSERT(res == RE_FAILURE);
|
493
|
+
return Factory::null_value();
|
471
494
|
}
|
472
495
|
|
473
496
|
|
@@ -4849,17 +4872,18 @@ void Analysis::VisitAssertion(AssertionNode* that) {
|
|
4849
4872
|
|
4850
4873
|
SetRelation word_relation =
|
4851
4874
|
CharacterRange::WordCharacterRelation(following_chars);
|
4852
|
-
if (word_relation.
|
4853
|
-
//
|
4875
|
+
if (word_relation.Disjoint()) {
|
4876
|
+
// Includes the case where following_chars is empty (e.g., end-of-input).
|
4877
|
+
// Following character is definitely *not* a word character.
|
4854
4878
|
type = (type == AssertionNode::AT_BOUNDARY) ?
|
4855
|
-
|
4856
|
-
|
4879
|
+
AssertionNode::AFTER_WORD_CHARACTER :
|
4880
|
+
AssertionNode::AFTER_NONWORD_CHARACTER;
|
4857
4881
|
that->set_type(type);
|
4858
|
-
} else if (word_relation.
|
4859
|
-
// Following character is definitely
|
4882
|
+
} else if (word_relation.ContainedIn()) {
|
4883
|
+
// Following character is definitely a word character.
|
4860
4884
|
type = (type == AssertionNode::AT_BOUNDARY) ?
|
4861
|
-
|
4862
|
-
|
4885
|
+
AssertionNode::AFTER_NONWORD_CHARACTER :
|
4886
|
+
AssertionNode::AFTER_WORD_CHARACTER;
|
4863
4887
|
that->set_type(type);
|
4864
4888
|
}
|
4865
4889
|
}
|
@@ -4966,7 +4990,9 @@ int AssertionNode::ComputeFirstCharacterSet(int budget) {
|
|
4966
4990
|
case AFTER_WORD_CHARACTER: {
|
4967
4991
|
ASSERT_NOT_NULL(on_success());
|
4968
4992
|
budget = on_success()->ComputeFirstCharacterSet(budget);
|
4969
|
-
|
4993
|
+
if (budget >= 0) {
|
4994
|
+
set_first_character_set(on_success()->first_character_set());
|
4995
|
+
}
|
4970
4996
|
break;
|
4971
4997
|
}
|
4972
4998
|
}
|
@@ -4992,6 +5018,10 @@ int ActionNode::ComputeFirstCharacterSet(int budget) {
|
|
4992
5018
|
int BackReferenceNode::ComputeFirstCharacterSet(int budget) {
|
4993
5019
|
// We don't know anything about the first character of a backreference
|
4994
5020
|
// at this point.
|
5021
|
+
// The potential first characters are the first characters of the capture,
|
5022
|
+
// and the first characters of the on_success node, depending on whether the
|
5023
|
+
// capture can be empty and whether it is known to be participating or known
|
5024
|
+
// not to be.
|
4995
5025
|
return kComputeFirstCharacterSetFail;
|
4996
5026
|
}
|
4997
5027
|
|
@@ -5011,8 +5041,11 @@ int TextNode::ComputeFirstCharacterSet(int budget) {
|
|
5011
5041
|
} else {
|
5012
5042
|
ASSERT(text.type == TextElement::CHAR_CLASS);
|
5013
5043
|
RegExpCharacterClass* char_class = text.data.u_char_class;
|
5044
|
+
ZoneList<CharacterRange>* ranges = char_class->ranges();
|
5045
|
+
// TODO(lrn): Canonicalize ranges when they are created
|
5046
|
+
// instead of waiting until now.
|
5047
|
+
CharacterRange::Canonicalize(ranges);
|
5014
5048
|
if (char_class->is_negated()) {
|
5015
|
-
ZoneList<CharacterRange>* ranges = char_class->ranges();
|
5016
5049
|
int length = ranges->length();
|
5017
5050
|
int new_length = length + 1;
|
5018
5051
|
if (length > 0) {
|
@@ -5026,7 +5059,7 @@ int TextNode::ComputeFirstCharacterSet(int budget) {
|
|
5026
5059
|
CharacterRange::Negate(ranges, negated_ranges);
|
5027
5060
|
set_first_character_set(negated_ranges);
|
5028
5061
|
} else {
|
5029
|
-
set_first_character_set(
|
5062
|
+
set_first_character_set(ranges);
|
5030
5063
|
}
|
5031
5064
|
}
|
5032
5065
|
}
|
@@ -5200,7 +5233,7 @@ RegExpEngine::CompilationResult RegExpEngine::Compile(RegExpCompileData* data,
|
|
5200
5233
|
NodeInfo info = *node->info();
|
5201
5234
|
|
5202
5235
|
// Create the correct assembler for the architecture.
|
5203
|
-
#
|
5236
|
+
#ifndef V8_INTERPRETED_REGEXP
|
5204
5237
|
// Native regexp implementation.
|
5205
5238
|
|
5206
5239
|
NativeRegExpMacroAssembler::Mode mode =
|
@@ -5215,11 +5248,11 @@ RegExpEngine::CompilationResult RegExpEngine::Compile(RegExpCompileData* data,
|
|
5215
5248
|
RegExpMacroAssemblerARM macro_assembler(mode, (data->capture_count + 1) * 2);
|
5216
5249
|
#endif
|
5217
5250
|
|
5218
|
-
#else //
|
5251
|
+
#else // V8_INTERPRETED_REGEXP
|
5219
5252
|
// Interpreted regexp implementation.
|
5220
5253
|
EmbeddedVector<byte, 1024> codes;
|
5221
5254
|
RegExpMacroAssemblerIrregexp macro_assembler(codes);
|
5222
|
-
#endif
|
5255
|
+
#endif // V8_INTERPRETED_REGEXP
|
5223
5256
|
|
5224
5257
|
return compiler.Assemble(¯o_assembler,
|
5225
5258
|
node,
|