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
@@ -36,7 +36,8 @@ namespace internal {
|
|
36
36
|
// Default scratch register used by MacroAssembler (and other code that needs
|
37
37
|
// a spare register). The register isn't callee save, and not used by the
|
38
38
|
// function calling convention.
|
39
|
-
static const Register kScratchRegister = r10
|
39
|
+
static const Register kScratchRegister = { 10 }; // r10.
|
40
|
+
static const Register kRootRegister = { 13 }; // r13
|
40
41
|
|
41
42
|
// Convenience for platform-independent signatures.
|
42
43
|
typedef Operand MemOperand;
|
@@ -65,6 +66,21 @@ class MacroAssembler: public Assembler {
|
|
65
66
|
// ---------------------------------------------------------------------------
|
66
67
|
// GC Support
|
67
68
|
|
69
|
+
// Set the remebered set bit for an address which points into an
|
70
|
+
// object. RecordWriteHelper only works if the object is not in new
|
71
|
+
// space.
|
72
|
+
void RecordWriteHelper(Register object,
|
73
|
+
Register addr,
|
74
|
+
Register scratch);
|
75
|
+
|
76
|
+
// Check if object is in new space. The condition cc can be equal or
|
77
|
+
// not_equal. If it is equal a jump will be done if the object is on new
|
78
|
+
// space. The register scratch can be object itself, but it will be clobbered.
|
79
|
+
void InNewSpace(Register object,
|
80
|
+
Register scratch,
|
81
|
+
Condition cc,
|
82
|
+
Label* branch);
|
83
|
+
|
68
84
|
// Set the remembered set bit for [object+offset].
|
69
85
|
// object is the object being stored into, value is the object being stored.
|
70
86
|
// If offset is zero, then the scratch register contains the array index into
|
@@ -86,7 +102,6 @@ class MacroAssembler: public Assembler {
|
|
86
102
|
Register value,
|
87
103
|
Register scratch);
|
88
104
|
|
89
|
-
|
90
105
|
#ifdef ENABLE_DEBUGGER_SUPPORT
|
91
106
|
// ---------------------------------------------------------------------------
|
92
107
|
// Debugger Support
|
@@ -98,6 +113,7 @@ class MacroAssembler: public Assembler {
|
|
98
113
|
void CopyRegistersFromStackToMemory(Register base,
|
99
114
|
Register scratch,
|
100
115
|
RegList regs);
|
116
|
+
void DebugBreak();
|
101
117
|
#endif
|
102
118
|
|
103
119
|
// ---------------------------------------------------------------------------
|
@@ -148,6 +164,10 @@ class MacroAssembler: public Assembler {
|
|
148
164
|
const ParameterCount& actual,
|
149
165
|
InvokeFlag flag);
|
150
166
|
|
167
|
+
void InvokeFunction(JSFunction* function,
|
168
|
+
const ParameterCount& actual,
|
169
|
+
InvokeFlag flag);
|
170
|
+
|
151
171
|
// Invoke specified builtin JavaScript function. Adds an entry to
|
152
172
|
// the unresolved list if the name does not resolve.
|
153
173
|
void InvokeBuiltin(Builtins::JavaScript id, InvokeFlag flag);
|
@@ -162,7 +182,8 @@ class MacroAssembler: public Assembler {
|
|
162
182
|
// Conversions between tagged smi values and non-tagged integer values.
|
163
183
|
|
164
184
|
// Tag an integer value. The result must be known to be a valid smi value.
|
165
|
-
// Only uses the low 32 bits of the src register.
|
185
|
+
// Only uses the low 32 bits of the src register. Sets the N and Z flags
|
186
|
+
// based on the value of the resulting integer.
|
166
187
|
void Integer32ToSmi(Register dst, Register src);
|
167
188
|
|
168
189
|
// Tag an integer value if possible, or jump the integer value cannot be
|
@@ -190,6 +211,7 @@ class MacroAssembler: public Assembler {
|
|
190
211
|
// Simple comparison of smis.
|
191
212
|
void SmiCompare(Register dst, Register src);
|
192
213
|
void SmiCompare(Register dst, Smi* src);
|
214
|
+
void SmiCompare(Register dst, const Operand& src);
|
193
215
|
void SmiCompare(const Operand& dst, Register src);
|
194
216
|
void SmiCompare(const Operand& dst, Smi* src);
|
195
217
|
// Sets sign and zero flags depending on value of smi in register.
|
@@ -204,9 +226,15 @@ class MacroAssembler: public Assembler {
|
|
204
226
|
// Is the value a positive tagged smi.
|
205
227
|
Condition CheckPositiveSmi(Register src);
|
206
228
|
|
207
|
-
// Are both values
|
229
|
+
// Are both values tagged smis.
|
208
230
|
Condition CheckBothSmi(Register first, Register second);
|
209
231
|
|
232
|
+
// Are both values tagged smis.
|
233
|
+
Condition CheckBothPositiveSmi(Register first, Register second);
|
234
|
+
|
235
|
+
// Are either value a tagged smi.
|
236
|
+
Condition CheckEitherSmi(Register first, Register second);
|
237
|
+
|
210
238
|
// Is the value the minimum smi value (since we are using
|
211
239
|
// two's complement numbers, negating the value is known to yield
|
212
240
|
// a non-smi value).
|
@@ -245,6 +273,10 @@ class MacroAssembler: public Assembler {
|
|
245
273
|
// Jump if either or both register are not smi values.
|
246
274
|
void JumpIfNotBothSmi(Register src1, Register src2, Label* on_not_both_smi);
|
247
275
|
|
276
|
+
// Jump if either or both register are not positive smi values.
|
277
|
+
void JumpIfNotBothPositiveSmi(Register src1, Register src2,
|
278
|
+
Label* on_not_both_smi);
|
279
|
+
|
248
280
|
// Operations on tagged smi values.
|
249
281
|
|
250
282
|
// Smis represent a subset of integers. The subset is always equivalent to
|
@@ -270,7 +302,8 @@ class MacroAssembler: public Assembler {
|
|
270
302
|
Label* on_not_smi_result);
|
271
303
|
|
272
304
|
// Subtract an integer constant from a tagged smi, giving a tagged smi as
|
273
|
-
// result. No testing on the result is done.
|
305
|
+
// result. No testing on the result is done. Sets the N and Z flags
|
306
|
+
// based on the value of the resulting integer.
|
274
307
|
void SmiSubConstant(Register dst, Register src, Smi* constant);
|
275
308
|
|
276
309
|
// Subtract an integer constant from a tagged smi, giving a tagged smi as
|
@@ -302,6 +335,11 @@ class MacroAssembler: public Assembler {
|
|
302
335
|
Register src2,
|
303
336
|
Label* on_not_smi_result);
|
304
337
|
|
338
|
+
void SmiSub(Register dst,
|
339
|
+
Register src1,
|
340
|
+
Operand const& src2,
|
341
|
+
Label* on_not_smi_result);
|
342
|
+
|
305
343
|
// Multiplies smi values and return the result as a smi,
|
306
344
|
// if possible.
|
307
345
|
// If dst is src1, then src1 will be destroyed, even if
|
@@ -402,6 +440,28 @@ class MacroAssembler: public Assembler {
|
|
402
440
|
void Push(Smi* smi);
|
403
441
|
void Test(const Operand& dst, Smi* source);
|
404
442
|
|
443
|
+
// ---------------------------------------------------------------------------
|
444
|
+
// String macros.
|
445
|
+
void JumpIfNotBothSequentialAsciiStrings(Register first_object,
|
446
|
+
Register second_object,
|
447
|
+
Register scratch1,
|
448
|
+
Register scratch2,
|
449
|
+
Label* on_not_both_flat_ascii);
|
450
|
+
|
451
|
+
// Check whether the instance type represents a flat ascii string. Jump to the
|
452
|
+
// label if not. If the instance type can be scratched specify same register
|
453
|
+
// for both instance type and scratch.
|
454
|
+
void JumpIfInstanceTypeIsNotSequentialAscii(Register instance_type,
|
455
|
+
Register scratch,
|
456
|
+
Label *on_not_flat_ascii_string);
|
457
|
+
|
458
|
+
void JumpIfBothInstanceTypesAreNotSequentialAscii(
|
459
|
+
Register first_object_instance_type,
|
460
|
+
Register second_object_instance_type,
|
461
|
+
Register scratch1,
|
462
|
+
Register scratch2,
|
463
|
+
Label* on_fail);
|
464
|
+
|
405
465
|
// ---------------------------------------------------------------------------
|
406
466
|
// Macro instructions.
|
407
467
|
|
@@ -441,10 +501,33 @@ class MacroAssembler: public Assembler {
|
|
441
501
|
// Always use unsigned comparisons: above and below, not less and greater.
|
442
502
|
void CmpInstanceType(Register map, InstanceType type);
|
443
503
|
|
504
|
+
// Check if the map of an object is equal to a specified map and
|
505
|
+
// branch to label if not. Skip the smi check if not required
|
506
|
+
// (object is known to be a heap object)
|
507
|
+
void CheckMap(Register obj,
|
508
|
+
Handle<Map> map,
|
509
|
+
Label* fail,
|
510
|
+
bool is_heap_object);
|
511
|
+
|
512
|
+
// Check if the object in register heap_object is a string. Afterwards the
|
513
|
+
// register map contains the object map and the register instance_type
|
514
|
+
// contains the instance_type. The registers map and instance_type can be the
|
515
|
+
// same in which case it contains the instance type afterwards. Either of the
|
516
|
+
// registers map and instance_type can be the same as heap_object.
|
517
|
+
Condition IsObjectStringType(Register heap_object,
|
518
|
+
Register map,
|
519
|
+
Register instance_type);
|
520
|
+
|
444
521
|
// FCmp is similar to integer cmp, but requires unsigned
|
445
522
|
// jcc instructions (je, ja, jae, jb, jbe, je, and jz).
|
446
523
|
void FCmp();
|
447
524
|
|
525
|
+
// Abort execution if argument is not a number. Used in debug code.
|
526
|
+
void AbortIfNotNumber(Register object, const char* msg);
|
527
|
+
|
528
|
+
// Abort execution if argument is not a smi. Used in debug code.
|
529
|
+
void AbortIfNotSmi(Register object, const char* msg);
|
530
|
+
|
448
531
|
// ---------------------------------------------------------------------------
|
449
532
|
// Exception handling
|
450
533
|
|
@@ -467,9 +550,14 @@ class MacroAssembler: public Assembler {
|
|
467
550
|
// clobbered if it the same as the holder register. The function
|
468
551
|
// returns a register containing the holder - either object_reg or
|
469
552
|
// holder_reg.
|
553
|
+
// The function can optionally (when save_at_depth !=
|
554
|
+
// kInvalidProtoDepth) save the object at the given depth by moving
|
555
|
+
// it to [rsp + kPointerSize].
|
470
556
|
Register CheckMaps(JSObject* object, Register object_reg,
|
471
557
|
JSObject* holder, Register holder_reg,
|
472
|
-
Register scratch,
|
558
|
+
Register scratch,
|
559
|
+
int save_at_depth,
|
560
|
+
Label* miss);
|
473
561
|
|
474
562
|
// Generate code for checking access rights - used for security checks
|
475
563
|
// on access to global objects across environments. The holder register
|
@@ -601,35 +689,56 @@ class MacroAssembler: public Assembler {
|
|
601
689
|
void StubReturn(int argc);
|
602
690
|
|
603
691
|
// Call a runtime routine.
|
604
|
-
// Eventually this should be used for all C calls.
|
605
692
|
void CallRuntime(Runtime::Function* f, int num_arguments);
|
606
693
|
|
607
694
|
// Convenience function: Same as above, but takes the fid instead.
|
608
695
|
void CallRuntime(Runtime::FunctionId id, int num_arguments);
|
609
696
|
|
697
|
+
// Convenience function: call an external reference.
|
698
|
+
void CallExternalReference(const ExternalReference& ext,
|
699
|
+
int num_arguments);
|
700
|
+
|
610
701
|
// Tail call of a runtime routine (jump).
|
611
|
-
// Like
|
612
|
-
// of
|
613
|
-
void
|
702
|
+
// Like JumpToExternalReference, but also takes care of passing the number
|
703
|
+
// of parameters.
|
704
|
+
void TailCallExternalReference(const ExternalReference& ext,
|
705
|
+
int num_arguments,
|
706
|
+
int result_size);
|
707
|
+
|
708
|
+
// Convenience function: tail call a runtime routine (jump).
|
709
|
+
void TailCallRuntime(Runtime::FunctionId fid,
|
614
710
|
int num_arguments,
|
615
711
|
int result_size);
|
616
712
|
|
617
713
|
// Jump to a runtime routine.
|
618
|
-
void
|
619
|
-
|
714
|
+
void JumpToExternalReference(const ExternalReference& ext, int result_size);
|
715
|
+
|
716
|
+
// Before calling a C-function from generated code, align arguments on stack.
|
717
|
+
// After aligning the frame, arguments must be stored in esp[0], esp[4],
|
718
|
+
// etc., not pushed. The argument count assumes all arguments are word sized.
|
719
|
+
// The number of slots reserved for arguments depends on platform. On Windows
|
720
|
+
// stack slots are reserved for the arguments passed in registers. On other
|
721
|
+
// platforms stack slots are only reserved for the arguments actually passed
|
722
|
+
// on the stack.
|
723
|
+
void PrepareCallCFunction(int num_arguments);
|
724
|
+
|
725
|
+
// Calls a C function and cleans up the space for arguments allocated
|
726
|
+
// by PrepareCallCFunction. The called function is not allowed to trigger a
|
727
|
+
// garbage collection, since that might move the code and invalidate the
|
728
|
+
// return address (unless this is somehow accounted for by the called
|
729
|
+
// function).
|
730
|
+
void CallCFunction(ExternalReference function, int num_arguments);
|
731
|
+
void CallCFunction(Register function, int num_arguments);
|
732
|
+
|
733
|
+
// Calculate the number of stack slots to reserve for arguments when calling a
|
734
|
+
// C function.
|
735
|
+
int ArgumentStackSlotsForCFunctionCall(int num_arguments);
|
620
736
|
|
621
737
|
// ---------------------------------------------------------------------------
|
622
738
|
// Utilities
|
623
739
|
|
624
740
|
void Ret();
|
625
741
|
|
626
|
-
struct Unresolved {
|
627
|
-
int pc;
|
628
|
-
uint32_t flags; // see Bootstrapper::FixupFlags decoders/encoders.
|
629
|
-
const char* name;
|
630
|
-
};
|
631
|
-
List<Unresolved>* unresolved() { return &unresolved_; }
|
632
|
-
|
633
742
|
Handle<Object> CodeObject() { return code_object_; }
|
634
743
|
|
635
744
|
|
@@ -654,6 +763,9 @@ class MacroAssembler: public Assembler {
|
|
654
763
|
// Print a message to stdout and abort execution.
|
655
764
|
void Abort(const char* msg);
|
656
765
|
|
766
|
+
// Check that the stack is aligned.
|
767
|
+
void CheckStackAlignment();
|
768
|
+
|
657
769
|
// Verify restrictions about code generated in stubs.
|
658
770
|
void set_generating_stub(bool value) { generating_stub_ = value; }
|
659
771
|
bool generating_stub() { return generating_stub_; }
|
@@ -661,11 +773,10 @@ class MacroAssembler: public Assembler {
|
|
661
773
|
bool allow_stub_calls() { return allow_stub_calls_; }
|
662
774
|
|
663
775
|
private:
|
664
|
-
List<Unresolved> unresolved_;
|
665
776
|
bool generating_stub_;
|
666
777
|
bool allow_stub_calls_;
|
667
|
-
|
668
|
-
|
778
|
+
// This handle will be patched with the code object on installation.
|
779
|
+
Handle<Object> code_object_;
|
669
780
|
|
670
781
|
// Helper functions for generating invokes.
|
671
782
|
void InvokePrologue(const ParameterCount& expected,
|
@@ -675,27 +786,22 @@ class MacroAssembler: public Assembler {
|
|
675
786
|
Label* done,
|
676
787
|
InvokeFlag flag);
|
677
788
|
|
678
|
-
// Prepares for a call or jump to a builtin by doing two things:
|
679
|
-
// 1. Emits code that fetches the builtin's function object from the context
|
680
|
-
// at runtime, and puts it in the register rdi.
|
681
|
-
// 2. Fetches the builtin's code object, and returns it in a handle, at
|
682
|
-
// compile time, so that later code can emit instructions to jump or call
|
683
|
-
// the builtin directly. If the code object has not yet been created, it
|
684
|
-
// returns the builtin code object for IllegalFunction, and sets the
|
685
|
-
// output parameter "resolved" to false. Code that uses the return value
|
686
|
-
// should then add the address and the builtin name to the list of fixups
|
687
|
-
// called unresolved_, which is fixed up by the bootstrapper.
|
688
|
-
Handle<Code> ResolveBuiltin(Builtins::JavaScript id, bool* resolved);
|
689
|
-
|
690
789
|
// Activation support.
|
691
790
|
void EnterFrame(StackFrame::Type type);
|
692
791
|
void LeaveFrame(StackFrame::Type type);
|
693
792
|
|
694
793
|
// Allocation support helpers.
|
794
|
+
// Loads the top of new-space into the result register.
|
795
|
+
// If flags contains RESULT_CONTAINS_TOP then result_end is valid and
|
796
|
+
// already contains the top of new-space, and scratch is invalid.
|
797
|
+
// Otherwise the address of the new-space top is loaded into scratch (if
|
798
|
+
// scratch is valid), and the new-space top is loaded into result.
|
695
799
|
void LoadAllocationTopHelper(Register result,
|
696
800
|
Register result_end,
|
697
801
|
Register scratch,
|
698
802
|
AllocationFlags flags);
|
803
|
+
// Update allocation top with value in result_end register.
|
804
|
+
// If scratch is valid, it contains the address of the allocation top.
|
699
805
|
void UpdateAllocationTopHelper(Register result_end, Register scratch);
|
700
806
|
};
|
701
807
|
|
@@ -39,7 +39,7 @@
|
|
39
39
|
namespace v8 {
|
40
40
|
namespace internal {
|
41
41
|
|
42
|
-
#
|
42
|
+
#ifndef V8_INTERPRETED_REGEXP
|
43
43
|
|
44
44
|
/*
|
45
45
|
* This assembler uses the following register assignment convention
|
@@ -71,8 +71,6 @@ namespace internal {
|
|
71
71
|
* through the runtime system)
|
72
72
|
* - stack_area_base (High end of the memory area to use as
|
73
73
|
* backtracking stack)
|
74
|
-
* - at_start (if 1, we are starting at the start of the
|
75
|
-
* string, otherwise 0)
|
76
74
|
* - int* capture_array (int[num_saved_registers_], for output).
|
77
75
|
* - end of input (Address of end of string)
|
78
76
|
* - start of input (Address of first character in string)
|
@@ -82,6 +80,8 @@ namespace internal {
|
|
82
80
|
* - backup of callee save registers (rbx, possibly rsi and rdi).
|
83
81
|
* - Offset of location before start of input (effectively character
|
84
82
|
* position -1). Used to initialize capture registers to a non-position.
|
83
|
+
* - At start of string (if 1, we are starting at the start of the
|
84
|
+
* string, otherwise 0)
|
85
85
|
* - register 0 rbp[-n] (Only positions must be stored in the first
|
86
86
|
* - register 1 rbp[-n-8] num_saved_registers_ registers)
|
87
87
|
* - ...
|
@@ -329,14 +329,14 @@ void RegExpMacroAssemblerX64::CheckNotBackReferenceIgnoreCase(
|
|
329
329
|
ASSERT(mode_ == UC16);
|
330
330
|
// Save important/volatile registers before calling C function.
|
331
331
|
#ifndef _WIN64
|
332
|
-
//
|
332
|
+
// Caller save on Linux and callee save in Windows.
|
333
333
|
__ push(rsi);
|
334
334
|
__ push(rdi);
|
335
335
|
#endif
|
336
336
|
__ push(backtrack_stackpointer());
|
337
337
|
|
338
|
-
int num_arguments = 3;
|
339
|
-
|
338
|
+
static const int num_arguments = 3;
|
339
|
+
__ PrepareCallCFunction(num_arguments);
|
340
340
|
|
341
341
|
// Put arguments into parameter registers. Parameters are
|
342
342
|
// Address byte_offset1 - Address captured substring's start.
|
@@ -361,7 +361,7 @@ void RegExpMacroAssemblerX64::CheckNotBackReferenceIgnoreCase(
|
|
361
361
|
#endif
|
362
362
|
ExternalReference compare =
|
363
363
|
ExternalReference::re_case_insensitive_compare_uc16();
|
364
|
-
CallCFunction(compare, num_arguments);
|
364
|
+
__ CallCFunction(compare, num_arguments);
|
365
365
|
|
366
366
|
// Restore original values before reacting on result value.
|
367
367
|
__ Move(code_object_pointer(), masm_->CodeObject());
|
@@ -582,49 +582,38 @@ bool RegExpMacroAssemblerX64::CheckSpecialCharacterClass(uc16 type,
|
|
582
582
|
return true;
|
583
583
|
}
|
584
584
|
case 'w': {
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
BranchOrBacktrack(above, on_no_match);
|
597
|
-
__ jmp(&done);
|
598
|
-
__ bind(&check_digits);
|
599
|
-
// Check current character in range ['0'..'9'].
|
600
|
-
__ cmpl(current_character(), Immediate('0'));
|
601
|
-
BranchOrBacktrack(below, on_no_match);
|
602
|
-
__ bind(&done);
|
603
|
-
|
585
|
+
if (mode_ != ASCII) {
|
586
|
+
// Table is 128 entries, so all ASCII characters can be tested.
|
587
|
+
__ cmpl(current_character(), Immediate('z'));
|
588
|
+
BranchOrBacktrack(above, on_no_match);
|
589
|
+
}
|
590
|
+
__ movq(rbx, ExternalReference::re_word_character_map());
|
591
|
+
ASSERT_EQ(0, word_character_map[0]); // Character '\0' is not a word char.
|
592
|
+
ExternalReference word_map = ExternalReference::re_word_character_map();
|
593
|
+
__ testb(Operand(rbx, current_character(), times_1, 0),
|
594
|
+
current_character());
|
595
|
+
BranchOrBacktrack(zero, on_no_match);
|
604
596
|
return true;
|
605
597
|
}
|
606
598
|
case 'W': {
|
607
|
-
Label done
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
__
|
614
|
-
|
615
|
-
|
616
|
-
__
|
617
|
-
|
618
|
-
BranchOrBacktrack(
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
__ cmpl(current_character(), Immediate('0'));
|
623
|
-
BranchOrBacktrack(above_equal, on_no_match);
|
624
|
-
__ bind(&done);
|
625
|
-
|
599
|
+
Label done;
|
600
|
+
if (mode_ != ASCII) {
|
601
|
+
// Table is 128 entries, so all ASCII characters can be tested.
|
602
|
+
__ cmpl(current_character(), Immediate('z'));
|
603
|
+
__ j(above, &done);
|
604
|
+
}
|
605
|
+
__ movq(rbx, ExternalReference::re_word_character_map());
|
606
|
+
ASSERT_EQ(0, word_character_map[0]); // Character '\0' is not a word char.
|
607
|
+
ExternalReference word_map = ExternalReference::re_word_character_map();
|
608
|
+
__ testb(Operand(rbx, current_character(), times_1, 0),
|
609
|
+
current_character());
|
610
|
+
BranchOrBacktrack(not_zero, on_no_match);
|
611
|
+
if (mode_ != ASCII) {
|
612
|
+
__ bind(&done);
|
613
|
+
}
|
626
614
|
return true;
|
627
615
|
}
|
616
|
+
|
628
617
|
case '*':
|
629
618
|
// Match any character.
|
630
619
|
return true;
|
@@ -645,7 +634,6 @@ void RegExpMacroAssemblerX64::Fail() {
|
|
645
634
|
Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
|
646
635
|
// Finalize code - write the entry point code now we know how many
|
647
636
|
// registers we need.
|
648
|
-
|
649
637
|
// Entry code:
|
650
638
|
__ bind(&entry_label_);
|
651
639
|
// Start new stack frame.
|
@@ -672,7 +660,7 @@ Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
|
|
672
660
|
ASSERT_EQ(kInputStart, -3 * kPointerSize);
|
673
661
|
ASSERT_EQ(kInputEnd, -4 * kPointerSize);
|
674
662
|
ASSERT_EQ(kRegisterOutput, -5 * kPointerSize);
|
675
|
-
ASSERT_EQ(
|
663
|
+
ASSERT_EQ(kStackHighEnd, -6 * kPointerSize);
|
676
664
|
__ push(rdi);
|
677
665
|
__ push(rsi);
|
678
666
|
__ push(rdx);
|
@@ -682,7 +670,9 @@ Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
|
|
682
670
|
|
683
671
|
__ push(rbx); // Callee-save
|
684
672
|
#endif
|
673
|
+
|
685
674
|
__ push(Immediate(0)); // Make room for "input start - 1" constant.
|
675
|
+
__ push(Immediate(0)); // Make room for "at start" constant.
|
686
676
|
|
687
677
|
// Check if we have space on the stack for registers.
|
688
678
|
Label stack_limit_hit;
|
@@ -721,12 +711,27 @@ Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
|
|
721
711
|
__ movq(rdi, Operand(rbp, kInputStart));
|
722
712
|
// Set up rdi to be negative offset from string end.
|
723
713
|
__ subq(rdi, rsi);
|
724
|
-
// Set rax to address of char before start of
|
714
|
+
// Set rax to address of char before start of the string
|
725
715
|
// (effectively string position -1).
|
726
|
-
__
|
716
|
+
__ movq(rbx, Operand(rbp, kStartIndex));
|
717
|
+
__ neg(rbx);
|
718
|
+
if (mode_ == UC16) {
|
719
|
+
__ lea(rax, Operand(rdi, rbx, times_2, -char_size()));
|
720
|
+
} else {
|
721
|
+
__ lea(rax, Operand(rdi, rbx, times_1, -char_size()));
|
722
|
+
}
|
727
723
|
// Store this value in a local variable, for use when clearing
|
728
724
|
// position registers.
|
729
725
|
__ movq(Operand(rbp, kInputStartMinusOne), rax);
|
726
|
+
|
727
|
+
// Determine whether the start index is zero, that is at the start of the
|
728
|
+
// string, and store that value in a local variable.
|
729
|
+
__ movq(rbx, Operand(rbp, kStartIndex));
|
730
|
+
__ xor_(rcx, rcx); // setcc only operates on cl (lower byte of rcx).
|
731
|
+
__ testq(rbx, rbx);
|
732
|
+
__ setcc(zero, rcx); // 1 if 0 (start of string), 0 if positive.
|
733
|
+
__ movq(Operand(rbp, kAtStart), rcx);
|
734
|
+
|
730
735
|
if (num_saved_registers_ > 0) {
|
731
736
|
// Fill saved registers with initial value = start offset - 1
|
732
737
|
// Fill in stack push order, to avoid accessing across an unwritten
|
@@ -771,9 +776,15 @@ Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
|
|
771
776
|
__ bind(&success_label_);
|
772
777
|
if (num_saved_registers_ > 0) {
|
773
778
|
// copy captures to output
|
779
|
+
__ movq(rdx, Operand(rbp, kStartIndex));
|
774
780
|
__ movq(rbx, Operand(rbp, kRegisterOutput));
|
775
781
|
__ movq(rcx, Operand(rbp, kInputEnd));
|
776
782
|
__ subq(rcx, Operand(rbp, kInputStart));
|
783
|
+
if (mode_ == UC16) {
|
784
|
+
__ lea(rcx, Operand(rcx, rdx, times_2, 0));
|
785
|
+
} else {
|
786
|
+
__ addq(rcx, rdx);
|
787
|
+
}
|
777
788
|
for (int i = 0; i < num_saved_registers_; i++) {
|
778
789
|
__ movq(rax, register_location(i));
|
779
790
|
__ addq(rax, rcx); // Convert to index from start, not end.
|
@@ -850,8 +861,8 @@ Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
|
|
850
861
|
#endif
|
851
862
|
|
852
863
|
// Call GrowStack(backtrack_stackpointer())
|
853
|
-
int num_arguments = 2;
|
854
|
-
|
864
|
+
static const int num_arguments = 2;
|
865
|
+
__ PrepareCallCFunction(num_arguments);
|
855
866
|
#ifdef _WIN64
|
856
867
|
// Microsoft passes parameters in rcx, rdx.
|
857
868
|
// First argument, backtrack stackpointer, is already in rcx.
|
@@ -862,7 +873,7 @@ Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
|
|
862
873
|
__ lea(rsi, Operand(rbp, kStackHighEnd)); // Second argument.
|
863
874
|
#endif
|
864
875
|
ExternalReference grow_stack = ExternalReference::re_grow_stack();
|
865
|
-
CallCFunction(grow_stack, num_arguments);
|
876
|
+
__ CallCFunction(grow_stack, num_arguments);
|
866
877
|
// If return NULL, we have failed to grow the stack, and
|
867
878
|
// must exit with a stack-overflow exception.
|
868
879
|
__ testq(rax, rax);
|
@@ -894,7 +905,7 @@ Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
|
|
894
905
|
NULL,
|
895
906
|
Code::ComputeFlags(Code::REGEXP),
|
896
907
|
masm_->CodeObject());
|
897
|
-
|
908
|
+
PROFILE(RegExpCodeCreateEvent(*code, *source));
|
898
909
|
return Handle<Object>::cast(code);
|
899
910
|
}
|
900
911
|
|
@@ -1030,8 +1041,8 @@ void RegExpMacroAssemblerX64::WriteStackPointerToRegister(int reg) {
|
|
1030
1041
|
void RegExpMacroAssemblerX64::CallCheckStackGuardState() {
|
1031
1042
|
// This function call preserves no register values. Caller should
|
1032
1043
|
// store anything volatile in a C call or overwritten by this function.
|
1033
|
-
int num_arguments = 3;
|
1034
|
-
|
1044
|
+
static const int num_arguments = 3;
|
1045
|
+
__ PrepareCallCFunction(num_arguments);
|
1035
1046
|
#ifdef _WIN64
|
1036
1047
|
// Second argument: Code* of self. (Do this before overwriting r8).
|
1037
1048
|
__ movq(rdx, code_object_pointer());
|
@@ -1051,7 +1062,7 @@ void RegExpMacroAssemblerX64::CallCheckStackGuardState() {
|
|
1051
1062
|
#endif
|
1052
1063
|
ExternalReference stack_check =
|
1053
1064
|
ExternalReference::re_check_stack_guard_state();
|
1054
|
-
CallCFunction(stack_check, num_arguments);
|
1065
|
+
__ CallCFunction(stack_check, num_arguments);
|
1055
1066
|
}
|
1056
1067
|
|
1057
1068
|
|
@@ -1073,6 +1084,12 @@ int RegExpMacroAssemblerX64::CheckStackGuardState(Address* return_address,
|
|
1073
1084
|
// If not real stack overflow the stack guard was used to interrupt
|
1074
1085
|
// execution for another purpose.
|
1075
1086
|
|
1087
|
+
// If this is a direct call from JavaScript retry the RegExp forcing the call
|
1088
|
+
// through the runtime system. Currently the direct call cannot handle a GC.
|
1089
|
+
if (frame_entry<int>(re_frame, kDirectCall) == 1) {
|
1090
|
+
return RETRY;
|
1091
|
+
}
|
1092
|
+
|
1076
1093
|
// Prepare for possible GC.
|
1077
1094
|
HandleScope handles;
|
1078
1095
|
Handle<Code> code_handle(re_code);
|
@@ -1267,45 +1284,6 @@ void RegExpMacroAssemblerX64::CheckStackLimit() {
|
|
1267
1284
|
}
|
1268
1285
|
|
1269
1286
|
|
1270
|
-
void RegExpMacroAssemblerX64::FrameAlign(int num_arguments) {
|
1271
|
-
// TODO(lrn): Since we no longer use the system stack arbitrarily (but we do
|
1272
|
-
// use it, e.g., for SafeCall), we know the number of elements on the stack
|
1273
|
-
// since the last frame alignment. We might be able to do this simpler then.
|
1274
|
-
int frameAlignment = OS::ActivationFrameAlignment();
|
1275
|
-
ASSERT(frameAlignment != 0);
|
1276
|
-
// Make stack end at alignment and make room for num_arguments pointers
|
1277
|
-
// (on Win64 only) and the original value of rsp.
|
1278
|
-
__ movq(kScratchRegister, rsp);
|
1279
|
-
ASSERT(IsPowerOf2(frameAlignment));
|
1280
|
-
#ifdef _WIN64
|
1281
|
-
// Allocate space for parameters and old rsp.
|
1282
|
-
__ subq(rsp, Immediate((num_arguments + 1) * kPointerSize));
|
1283
|
-
__ and_(rsp, Immediate(-frameAlignment));
|
1284
|
-
__ movq(Operand(rsp, num_arguments * kPointerSize), kScratchRegister);
|
1285
|
-
#else
|
1286
|
-
// Allocate space for old rsp.
|
1287
|
-
__ subq(rsp, Immediate(kPointerSize));
|
1288
|
-
__ and_(rsp, Immediate(-frameAlignment));
|
1289
|
-
__ movq(Operand(rsp, 0), kScratchRegister);
|
1290
|
-
#endif
|
1291
|
-
}
|
1292
|
-
|
1293
|
-
|
1294
|
-
void RegExpMacroAssemblerX64::CallCFunction(ExternalReference function,
|
1295
|
-
int num_arguments) {
|
1296
|
-
__ movq(rax, function);
|
1297
|
-
__ call(rax);
|
1298
|
-
ASSERT(OS::ActivationFrameAlignment() != 0);
|
1299
|
-
#ifdef _WIN64
|
1300
|
-
__ movq(rsp, Operand(rsp, num_arguments * kPointerSize));
|
1301
|
-
#else
|
1302
|
-
// All arguments passed in registers.
|
1303
|
-
ASSERT(num_arguments <= 6);
|
1304
|
-
__ pop(rsp);
|
1305
|
-
#endif
|
1306
|
-
}
|
1307
|
-
|
1308
|
-
|
1309
1287
|
void RegExpMacroAssemblerX64::LoadCurrentCharacterUnchecked(int cp_offset,
|
1310
1288
|
int characters) {
|
1311
1289
|
if (mode_ == ASCII) {
|
@@ -1332,6 +1310,6 @@ void RegExpMacroAssemblerX64::LoadCurrentCharacterUnchecked(int cp_offset,
|
|
1332
1310
|
|
1333
1311
|
#undef __
|
1334
1312
|
|
1335
|
-
#endif //
|
1313
|
+
#endif // V8_INTERPRETED_REGEXP
|
1336
1314
|
|
1337
1315
|
}} // namespace v8::internal
|