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
@@ -48,6 +48,20 @@ class MacroAssembler: public Assembler {
|
|
48
48
|
// ---------------------------------------------------------------------------
|
49
49
|
// GC Support
|
50
50
|
|
51
|
+
// Set the remebered set bit for an address which points into an
|
52
|
+
// object. RecordWriteHelper only works if the object is not in new
|
53
|
+
// space.
|
54
|
+
void RecordWriteHelper(Register object,
|
55
|
+
Register addr,
|
56
|
+
Register scratch);
|
57
|
+
|
58
|
+
// Check if object is in new space.
|
59
|
+
// scratch can be object itself, but it will be clobbered.
|
60
|
+
void InNewSpace(Register object,
|
61
|
+
Register scratch,
|
62
|
+
Condition cc, // equal for new space, not_equal otherwise.
|
63
|
+
Label* branch);
|
64
|
+
|
51
65
|
// Set the remembered set bit for [object+offset].
|
52
66
|
// object is the object being stored into, value is the object being stored.
|
53
67
|
// If offset is zero, then the scratch register contains the array index into
|
@@ -69,6 +83,7 @@ class MacroAssembler: public Assembler {
|
|
69
83
|
void CopyRegistersFromStackToMemory(Register base,
|
70
84
|
Register scratch,
|
71
85
|
RegList regs);
|
86
|
+
void DebugBreak();
|
72
87
|
#endif
|
73
88
|
|
74
89
|
// ---------------------------------------------------------------------------
|
@@ -123,6 +138,10 @@ class MacroAssembler: public Assembler {
|
|
123
138
|
const ParameterCount& actual,
|
124
139
|
InvokeFlag flag);
|
125
140
|
|
141
|
+
void InvokeFunction(JSFunction* function,
|
142
|
+
const ParameterCount& actual,
|
143
|
+
InvokeFlag flag);
|
144
|
+
|
126
145
|
// Invoke specified builtin JavaScript function. Adds an entry to
|
127
146
|
// the unresolved list if the name does not resolve.
|
128
147
|
void InvokeBuiltin(Builtins::JavaScript id, InvokeFlag flag);
|
@@ -141,6 +160,14 @@ class MacroAssembler: public Assembler {
|
|
141
160
|
// Compare instance type for map.
|
142
161
|
void CmpInstanceType(Register map, InstanceType type);
|
143
162
|
|
163
|
+
// Check if the map of an object is equal to a specified map and
|
164
|
+
// branch to label if not. Skip the smi check if not required
|
165
|
+
// (object is known to be a heap object)
|
166
|
+
void CheckMap(Register obj,
|
167
|
+
Handle<Map> map,
|
168
|
+
Label* fail,
|
169
|
+
bool is_heap_object);
|
170
|
+
|
144
171
|
// Check if the object in register heap_object is a string. Afterwards the
|
145
172
|
// register map contains the object map and the register instance_type
|
146
173
|
// contains the instance_type. The registers map and instance_type can be the
|
@@ -157,12 +184,19 @@ class MacroAssembler: public Assembler {
|
|
157
184
|
// Smi tagging support.
|
158
185
|
void SmiTag(Register reg) {
|
159
186
|
ASSERT(kSmiTag == 0);
|
160
|
-
|
187
|
+
ASSERT(kSmiTagSize == 1);
|
188
|
+
add(reg, Operand(reg));
|
161
189
|
}
|
162
190
|
void SmiUntag(Register reg) {
|
163
191
|
sar(reg, kSmiTagSize);
|
164
192
|
}
|
165
193
|
|
194
|
+
// Abort execution if argument is not a number. Used in debug code.
|
195
|
+
void AbortIfNotNumber(Register object);
|
196
|
+
|
197
|
+
// Abort execution if argument is not a smi. Used in debug code.
|
198
|
+
void AbortIfNotSmi(Register object);
|
199
|
+
|
166
200
|
// ---------------------------------------------------------------------------
|
167
201
|
// Exception handling
|
168
202
|
|
@@ -185,9 +219,14 @@ class MacroAssembler: public Assembler {
|
|
185
219
|
// clobbered if it the same as the holder register. The function
|
186
220
|
// returns a register containing the holder - either object_reg or
|
187
221
|
// holder_reg.
|
222
|
+
// The function can optionally (when save_at_depth !=
|
223
|
+
// kInvalidProtoDepth) save the object at the given depth by moving
|
224
|
+
// it to [esp + kPointerSize].
|
188
225
|
Register CheckMaps(JSObject* object, Register object_reg,
|
189
226
|
JSObject* holder, Register holder_reg,
|
190
|
-
Register scratch,
|
227
|
+
Register scratch,
|
228
|
+
int save_at_depth,
|
229
|
+
Label* miss);
|
191
230
|
|
192
231
|
// Generate code for checking access rights - used for security checks
|
193
232
|
// on access to global objects across environments. The holder register
|
@@ -328,10 +367,9 @@ class MacroAssembler: public Assembler {
|
|
328
367
|
void StubReturn(int argc);
|
329
368
|
|
330
369
|
// Call a runtime routine.
|
331
|
-
// Eventually this should be used for all C calls.
|
332
370
|
void CallRuntime(Runtime::Function* f, int num_arguments);
|
333
371
|
|
334
|
-
// Call a runtime function, returning the
|
372
|
+
// Call a runtime function, returning the CodeStub object called.
|
335
373
|
// Try to generate the stub code if necessary. Do not perform a GC
|
336
374
|
// but instead return a retry after GC failure.
|
337
375
|
Object* TryCallRuntime(Runtime::Function* f, int num_arguments);
|
@@ -339,16 +377,41 @@ class MacroAssembler: public Assembler {
|
|
339
377
|
// Convenience function: Same as above, but takes the fid instead.
|
340
378
|
void CallRuntime(Runtime::FunctionId id, int num_arguments);
|
341
379
|
|
380
|
+
// Convenience function: call an external reference.
|
381
|
+
void CallExternalReference(ExternalReference ref, int num_arguments);
|
382
|
+
|
342
383
|
// Convenience function: Same as above, but takes the fid instead.
|
343
384
|
Object* TryCallRuntime(Runtime::FunctionId id, int num_arguments);
|
344
385
|
|
345
386
|
// Tail call of a runtime routine (jump).
|
346
|
-
// Like
|
347
|
-
// of
|
348
|
-
void
|
387
|
+
// Like JumpToExternalReference, but also takes care of passing the number
|
388
|
+
// of parameters.
|
389
|
+
void TailCallExternalReference(const ExternalReference& ext,
|
390
|
+
int num_arguments,
|
391
|
+
int result_size);
|
392
|
+
|
393
|
+
// Convenience function: tail call a runtime routine (jump).
|
394
|
+
void TailCallRuntime(Runtime::FunctionId fid,
|
349
395
|
int num_arguments,
|
350
396
|
int result_size);
|
351
397
|
|
398
|
+
// Before calling a C-function from generated code, align arguments on stack.
|
399
|
+
// After aligning the frame, arguments must be stored in esp[0], esp[4],
|
400
|
+
// etc., not pushed. The argument count assumes all arguments are word sized.
|
401
|
+
// Some compilers/platforms require the stack to be aligned when calling
|
402
|
+
// C++ code.
|
403
|
+
// Needs a scratch register to do some arithmetic. This register will be
|
404
|
+
// trashed.
|
405
|
+
void PrepareCallCFunction(int num_arguments, Register scratch);
|
406
|
+
|
407
|
+
// Calls a C function and cleans up the space for arguments allocated
|
408
|
+
// by PrepareCallCFunction. The called function is not allowed to trigger a
|
409
|
+
// garbage collection, since that might move the code and invalidate the
|
410
|
+
// return address (unless this is somehow accounted for by the called
|
411
|
+
// function).
|
412
|
+
void CallCFunction(ExternalReference function, int num_arguments);
|
413
|
+
void CallCFunction(Register function, int num_arguments);
|
414
|
+
|
352
415
|
void PushHandleScope(Register scratch);
|
353
416
|
|
354
417
|
// Pops a handle scope using the specified scratch register and
|
@@ -360,7 +423,7 @@ class MacroAssembler: public Assembler {
|
|
360
423
|
Object* TryPopHandleScope(Register saved, Register scratch);
|
361
424
|
|
362
425
|
// Jump to a runtime routine.
|
363
|
-
void
|
426
|
+
void JumpToExternalReference(const ExternalReference& ext);
|
364
427
|
|
365
428
|
|
366
429
|
// ---------------------------------------------------------------------------
|
@@ -376,13 +439,6 @@ class MacroAssembler: public Assembler {
|
|
376
439
|
|
377
440
|
void Move(Register target, Handle<Object> value);
|
378
441
|
|
379
|
-
struct Unresolved {
|
380
|
-
int pc;
|
381
|
-
uint32_t flags; // see Bootstrapper::FixupFlags decoders/encoders.
|
382
|
-
const char* name;
|
383
|
-
};
|
384
|
-
List<Unresolved>* unresolved() { return &unresolved_; }
|
385
|
-
|
386
442
|
Handle<Object> CodeObject() { return code_object_; }
|
387
443
|
|
388
444
|
|
@@ -392,6 +448,8 @@ class MacroAssembler: public Assembler {
|
|
392
448
|
void SetCounter(StatsCounter* counter, int value);
|
393
449
|
void IncrementCounter(StatsCounter* counter, int value);
|
394
450
|
void DecrementCounter(StatsCounter* counter, int value);
|
451
|
+
void IncrementCounter(Condition cc, StatsCounter* counter, int value);
|
452
|
+
void DecrementCounter(Condition cc, StatsCounter* counter, int value);
|
395
453
|
|
396
454
|
|
397
455
|
// ---------------------------------------------------------------------------
|
@@ -407,18 +465,38 @@ class MacroAssembler: public Assembler {
|
|
407
465
|
// Print a message to stdout and abort execution.
|
408
466
|
void Abort(const char* msg);
|
409
467
|
|
468
|
+
// Check that the stack is aligned.
|
469
|
+
void CheckStackAlignment();
|
470
|
+
|
410
471
|
// Verify restrictions about code generated in stubs.
|
411
472
|
void set_generating_stub(bool value) { generating_stub_ = value; }
|
412
473
|
bool generating_stub() { return generating_stub_; }
|
413
474
|
void set_allow_stub_calls(bool value) { allow_stub_calls_ = value; }
|
414
475
|
bool allow_stub_calls() { return allow_stub_calls_; }
|
415
476
|
|
477
|
+
// ---------------------------------------------------------------------------
|
478
|
+
// String utilities.
|
479
|
+
|
480
|
+
// Check whether the instance type represents a flat ascii string. Jump to the
|
481
|
+
// label if not. If the instance type can be scratched specify same register
|
482
|
+
// for both instance type and scratch.
|
483
|
+
void JumpIfInstanceTypeIsNotSequentialAscii(Register instance_type,
|
484
|
+
Register scratch,
|
485
|
+
Label* on_not_flat_ascii_string);
|
486
|
+
|
487
|
+
// Checks if both objects are sequential ASCII strings, and jumps to label
|
488
|
+
// if either is not.
|
489
|
+
void JumpIfNotBothSequentialAsciiStrings(Register object1,
|
490
|
+
Register object2,
|
491
|
+
Register scratch1,
|
492
|
+
Register scratch2,
|
493
|
+
Label* on_not_flat_ascii_strings);
|
494
|
+
|
416
495
|
private:
|
417
|
-
List<Unresolved> unresolved_;
|
418
496
|
bool generating_stub_;
|
419
497
|
bool allow_stub_calls_;
|
420
|
-
|
421
|
-
|
498
|
+
// This handle will be patched with the code object on installation.
|
499
|
+
Handle<Object> code_object_;
|
422
500
|
|
423
501
|
// Helper functions for generating invokes.
|
424
502
|
void InvokePrologue(const ParameterCount& expected,
|
@@ -428,18 +506,6 @@ class MacroAssembler: public Assembler {
|
|
428
506
|
Label* done,
|
429
507
|
InvokeFlag flag);
|
430
508
|
|
431
|
-
// Prepares for a call or jump to a builtin by doing two things:
|
432
|
-
// 1. Emits code that fetches the builtin's function object from the context
|
433
|
-
// at runtime, and puts it in the register rdi.
|
434
|
-
// 2. Fetches the builtin's code object, and returns it in a handle, at
|
435
|
-
// compile time, so that later code can emit instructions to jump or call
|
436
|
-
// the builtin directly. If the code object has not yet been created, it
|
437
|
-
// returns the builtin code object for IllegalFunction, and sets the
|
438
|
-
// output parameter "resolved" to false. Code that uses the return value
|
439
|
-
// should then add the address and the builtin name to the list of fixups
|
440
|
-
// called unresolved_, which is fixed up by the bootstrapper.
|
441
|
-
Handle<Code> ResolveBuiltin(Builtins::JavaScript id, bool* resolved);
|
442
|
-
|
443
509
|
// Activation support.
|
444
510
|
void EnterFrame(StackFrame::Type type);
|
445
511
|
void LeaveFrame(StackFrame::Type type);
|
@@ -38,7 +38,7 @@
|
|
38
38
|
namespace v8 {
|
39
39
|
namespace internal {
|
40
40
|
|
41
|
-
#
|
41
|
+
#ifndef V8_INTERPRETED_REGEXP
|
42
42
|
/*
|
43
43
|
* This assembler uses the following register assignment convention
|
44
44
|
* - edx : current character. Must be loaded using LoadCurrentCharacter
|
@@ -59,8 +59,6 @@ namespace internal {
|
|
59
59
|
* call through the runtime system)
|
60
60
|
* - stack_area_base (High end of the memory area to use as
|
61
61
|
* backtracking stack)
|
62
|
-
* - at_start (if 1, we are starting at the start of the
|
63
|
-
* string, otherwise 0)
|
64
62
|
* - int* capture_array (int[num_saved_registers_], for output).
|
65
63
|
* - end of input (Address of end of string)
|
66
64
|
* - start of input (Address of first character in string)
|
@@ -74,6 +72,8 @@ namespace internal {
|
|
74
72
|
* - backup of caller ebx
|
75
73
|
* - Offset of location before start of input (effectively character
|
76
74
|
* position -1). Used to initialize capture registers to a non-position.
|
75
|
+
* - Boolean at start (if 1, we are starting at the start of the string,
|
76
|
+
* otherwise 0)
|
77
77
|
* - register 0 ebp[-4] (Only positions must be stored in the first
|
78
78
|
* - register 1 ebp[-8] num_saved_registers_ registers)
|
79
79
|
* - ...
|
@@ -324,8 +324,8 @@ void RegExpMacroAssemblerIA32::CheckNotBackReferenceIgnoreCase(
|
|
324
324
|
__ push(backtrack_stackpointer());
|
325
325
|
__ push(ebx);
|
326
326
|
|
327
|
-
const int argument_count = 3;
|
328
|
-
|
327
|
+
static const int argument_count = 3;
|
328
|
+
__ PrepareCallCFunction(argument_count, ecx);
|
329
329
|
// Put arguments into allocated stack area, last argument highest on stack.
|
330
330
|
// Parameters are
|
331
331
|
// Address byte_offset1 - Address captured substring's start.
|
@@ -346,7 +346,7 @@ void RegExpMacroAssemblerIA32::CheckNotBackReferenceIgnoreCase(
|
|
346
346
|
|
347
347
|
ExternalReference compare =
|
348
348
|
ExternalReference::re_case_insensitive_compare_uc16();
|
349
|
-
CallCFunction(compare, argument_count);
|
349
|
+
__ CallCFunction(compare, argument_count);
|
350
350
|
// Pop original values before reacting on result value.
|
351
351
|
__ pop(ebx);
|
352
352
|
__ pop(backtrack_stackpointer());
|
@@ -539,46 +539,33 @@ bool RegExpMacroAssemblerIA32::CheckSpecialCharacterClass(uc16 type,
|
|
539
539
|
return true;
|
540
540
|
}
|
541
541
|
case 'w': {
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
//
|
548
|
-
|
549
|
-
__
|
550
|
-
|
551
|
-
|
552
|
-
__ cmp(Operand(eax), Immediate('z' - 'a'));
|
553
|
-
BranchOrBacktrack(above, on_no_match);
|
554
|
-
__ jmp(&done);
|
555
|
-
__ bind(&check_digits);
|
556
|
-
// Check current character in range ['0'..'9'].
|
557
|
-
__ cmp(Operand(current_character()), Immediate('0'));
|
558
|
-
BranchOrBacktrack(below, on_no_match);
|
559
|
-
__ bind(&done);
|
560
|
-
|
542
|
+
if (mode_ != ASCII) {
|
543
|
+
// Table is 128 entries, so all ASCII characters can be tested.
|
544
|
+
__ cmp(Operand(current_character()), Immediate('z'));
|
545
|
+
BranchOrBacktrack(above, on_no_match);
|
546
|
+
}
|
547
|
+
ASSERT_EQ(0, word_character_map[0]); // Character '\0' is not a word char.
|
548
|
+
ExternalReference word_map = ExternalReference::re_word_character_map();
|
549
|
+
__ test_b(current_character(),
|
550
|
+
Operand::StaticArray(current_character(), times_1, word_map));
|
551
|
+
BranchOrBacktrack(zero, on_no_match);
|
561
552
|
return true;
|
562
553
|
}
|
563
554
|
case 'W': {
|
564
|
-
Label done
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
// Check current character in range ['0'..'9'].
|
579
|
-
__ cmp(Operand(current_character()), Immediate('0'));
|
580
|
-
BranchOrBacktrack(above_equal, on_no_match);
|
581
|
-
__ bind(&done);
|
555
|
+
Label done;
|
556
|
+
if (mode_ != ASCII) {
|
557
|
+
// Table is 128 entries, so all ASCII characters can be tested.
|
558
|
+
__ cmp(Operand(current_character()), Immediate('z'));
|
559
|
+
__ j(above, &done);
|
560
|
+
}
|
561
|
+
ASSERT_EQ(0, word_character_map[0]); // Character '\0' is not a word char.
|
562
|
+
ExternalReference word_map = ExternalReference::re_word_character_map();
|
563
|
+
__ test_b(current_character(),
|
564
|
+
Operand::StaticArray(current_character(), times_1, word_map));
|
565
|
+
BranchOrBacktrack(not_zero, on_no_match);
|
566
|
+
if (mode_ != ASCII) {
|
567
|
+
__ bind(&done);
|
568
|
+
}
|
582
569
|
return true;
|
583
570
|
}
|
584
571
|
// Non-standard classes (with no syntactic shorthand) used internally.
|
@@ -638,6 +625,7 @@ Handle<Object> RegExpMacroAssemblerIA32::GetCode(Handle<String> source) {
|
|
638
625
|
__ push(edi);
|
639
626
|
__ push(ebx); // Callee-save on MacOS.
|
640
627
|
__ push(Immediate(0)); // Make room for "input start - 1" constant.
|
628
|
+
__ push(Immediate(0)); // Make room for "at start" constant.
|
641
629
|
|
642
630
|
// Check if we have space on the stack for registers.
|
643
631
|
Label stack_limit_hit;
|
@@ -665,6 +653,8 @@ Handle<Object> RegExpMacroAssemblerIA32::GetCode(Handle<String> source) {
|
|
665
653
|
__ j(not_zero, &exit_label_);
|
666
654
|
|
667
655
|
__ bind(&stack_ok);
|
656
|
+
// Load start index for later use.
|
657
|
+
__ mov(ebx, Operand(ebp, kStartIndex));
|
668
658
|
|
669
659
|
// Allocate space on stack for registers.
|
670
660
|
__ sub(Operand(esp), Immediate(num_registers_ * kPointerSize));
|
@@ -674,12 +664,27 @@ Handle<Object> RegExpMacroAssemblerIA32::GetCode(Handle<String> source) {
|
|
674
664
|
__ mov(edi, Operand(ebp, kInputStart));
|
675
665
|
// Set up edi to be negative offset from string end.
|
676
666
|
__ sub(edi, Operand(esi));
|
677
|
-
|
667
|
+
|
668
|
+
// Set eax to address of char before start of the string.
|
678
669
|
// (effectively string position -1).
|
679
|
-
__
|
670
|
+
__ neg(ebx);
|
671
|
+
if (mode_ == UC16) {
|
672
|
+
__ lea(eax, Operand(edi, ebx, times_2, -char_size()));
|
673
|
+
} else {
|
674
|
+
__ lea(eax, Operand(edi, ebx, times_1, -char_size()));
|
675
|
+
}
|
680
676
|
// Store this value in a local variable, for use when clearing
|
681
677
|
// position registers.
|
682
678
|
__ mov(Operand(ebp, kInputStartMinusOne), eax);
|
679
|
+
|
680
|
+
// Determine whether the start index is zero, that is at the start of the
|
681
|
+
// string, and store that value in a local variable.
|
682
|
+
__ xor_(Operand(ecx), ecx); // setcc only operates on cl (lower byte of ecx).
|
683
|
+
// Register ebx still holds -stringIndex.
|
684
|
+
__ test(ebx, Operand(ebx));
|
685
|
+
__ setcc(zero, ecx); // 1 if 0 (start of string), 0 if positive.
|
686
|
+
__ mov(Operand(ebp, kAtStart), ecx);
|
687
|
+
|
683
688
|
if (num_saved_registers_ > 0) { // Always is, if generated from a regexp.
|
684
689
|
// Fill saved registers with initial value = start offset - 1
|
685
690
|
// Fill in stack push order, to avoid accessing across an unwritten
|
@@ -724,10 +729,17 @@ Handle<Object> RegExpMacroAssemblerIA32::GetCode(Handle<String> source) {
|
|
724
729
|
// copy captures to output
|
725
730
|
__ mov(ebx, Operand(ebp, kRegisterOutput));
|
726
731
|
__ mov(ecx, Operand(ebp, kInputEnd));
|
732
|
+
__ mov(edx, Operand(ebp, kStartIndex));
|
727
733
|
__ sub(ecx, Operand(ebp, kInputStart));
|
734
|
+
if (mode_ == UC16) {
|
735
|
+
__ lea(ecx, Operand(ecx, edx, times_2, 0));
|
736
|
+
} else {
|
737
|
+
__ add(ecx, Operand(edx));
|
738
|
+
}
|
728
739
|
for (int i = 0; i < num_saved_registers_; i++) {
|
729
740
|
__ mov(eax, register_location(i));
|
730
|
-
|
741
|
+
// Convert to index from start of string, not end.
|
742
|
+
__ add(eax, Operand(ecx));
|
731
743
|
if (mode_ == UC16) {
|
732
744
|
__ sar(eax, 1); // Convert byte index to character index.
|
733
745
|
}
|
@@ -787,13 +799,13 @@ Handle<Object> RegExpMacroAssemblerIA32::GetCode(Handle<String> source) {
|
|
787
799
|
__ push(edi);
|
788
800
|
|
789
801
|
// Call GrowStack(backtrack_stackpointer())
|
790
|
-
int num_arguments = 2;
|
791
|
-
|
802
|
+
static const int num_arguments = 2;
|
803
|
+
__ PrepareCallCFunction(num_arguments, ebx);
|
792
804
|
__ lea(eax, Operand(ebp, kStackHighEnd));
|
793
805
|
__ mov(Operand(esp, 1 * kPointerSize), eax);
|
794
806
|
__ mov(Operand(esp, 0 * kPointerSize), backtrack_stackpointer());
|
795
807
|
ExternalReference grow_stack = ExternalReference::re_grow_stack();
|
796
|
-
CallCFunction(grow_stack, num_arguments);
|
808
|
+
__ CallCFunction(grow_stack, num_arguments);
|
797
809
|
// If return NULL, we have failed to grow the stack, and
|
798
810
|
// must exit with a stack-overflow exception.
|
799
811
|
__ or_(eax, Operand(eax));
|
@@ -820,7 +832,7 @@ Handle<Object> RegExpMacroAssemblerIA32::GetCode(Handle<String> source) {
|
|
820
832
|
NULL,
|
821
833
|
Code::ComputeFlags(Code::REGEXP),
|
822
834
|
masm_->CodeObject());
|
823
|
-
|
835
|
+
PROFILE(RegExpCodeCreateEvent(*code, *source));
|
824
836
|
return Handle<Object>::cast(code);
|
825
837
|
}
|
826
838
|
|
@@ -954,8 +966,8 @@ void RegExpMacroAssemblerIA32::WriteStackPointerToRegister(int reg) {
|
|
954
966
|
// Private methods:
|
955
967
|
|
956
968
|
void RegExpMacroAssemblerIA32::CallCheckStackGuardState(Register scratch) {
|
957
|
-
int num_arguments = 3;
|
958
|
-
|
969
|
+
static const int num_arguments = 3;
|
970
|
+
__ PrepareCallCFunction(num_arguments, scratch);
|
959
971
|
// RegExp code frame pointer.
|
960
972
|
__ mov(Operand(esp, 2 * kPointerSize), ebp);
|
961
973
|
// Code* of self.
|
@@ -965,7 +977,7 @@ void RegExpMacroAssemblerIA32::CallCheckStackGuardState(Register scratch) {
|
|
965
977
|
__ mov(Operand(esp, 0 * kPointerSize), eax);
|
966
978
|
ExternalReference check_stack_guard =
|
967
979
|
ExternalReference::re_check_stack_guard_state();
|
968
|
-
CallCFunction(check_stack_guard, num_arguments);
|
980
|
+
__ CallCFunction(check_stack_guard, num_arguments);
|
969
981
|
}
|
970
982
|
|
971
983
|
|
@@ -1090,19 +1102,22 @@ void RegExpMacroAssemblerIA32::BranchOrBacktrack(Condition condition,
|
|
1090
1102
|
|
1091
1103
|
|
1092
1104
|
void RegExpMacroAssemblerIA32::SafeCall(Label* to) {
|
1093
|
-
|
1105
|
+
Label return_to;
|
1106
|
+
__ push(Immediate::CodeRelativeOffset(&return_to));
|
1107
|
+
__ jmp(to);
|
1108
|
+
__ bind(&return_to);
|
1094
1109
|
}
|
1095
1110
|
|
1096
1111
|
|
1097
1112
|
void RegExpMacroAssemblerIA32::SafeReturn() {
|
1098
|
-
__
|
1099
|
-
__
|
1113
|
+
__ pop(ebx);
|
1114
|
+
__ add(Operand(ebx), Immediate(masm_->CodeObject()));
|
1115
|
+
__ jmp(Operand(ebx));
|
1100
1116
|
}
|
1101
1117
|
|
1102
1118
|
|
1103
1119
|
void RegExpMacroAssemblerIA32::SafeCallTarget(Label* name) {
|
1104
1120
|
__ bind(name);
|
1105
|
-
__ sub(Operand(esp, 0), Immediate(masm_->CodeObject()));
|
1106
1121
|
}
|
1107
1122
|
|
1108
1123
|
|
@@ -1156,37 +1171,6 @@ void RegExpMacroAssemblerIA32::CheckStackLimit() {
|
|
1156
1171
|
}
|
1157
1172
|
|
1158
1173
|
|
1159
|
-
void RegExpMacroAssemblerIA32::FrameAlign(int num_arguments, Register scratch) {
|
1160
|
-
// TODO(lrn): Since we no longer use the system stack arbitrarily (but we do
|
1161
|
-
// use it, e.g., for SafeCall), we know the number of elements on the stack
|
1162
|
-
// since the last frame alignment. We might be able to do this simpler then.
|
1163
|
-
int frameAlignment = OS::ActivationFrameAlignment();
|
1164
|
-
if (frameAlignment != 0) {
|
1165
|
-
// Make stack end at alignment and make room for num_arguments words
|
1166
|
-
// and the original value of esp.
|
1167
|
-
__ mov(scratch, esp);
|
1168
|
-
__ sub(Operand(esp), Immediate((num_arguments + 1) * kPointerSize));
|
1169
|
-
ASSERT(IsPowerOf2(frameAlignment));
|
1170
|
-
__ and_(esp, -frameAlignment);
|
1171
|
-
__ mov(Operand(esp, num_arguments * kPointerSize), scratch);
|
1172
|
-
} else {
|
1173
|
-
__ sub(Operand(esp), Immediate(num_arguments * kPointerSize));
|
1174
|
-
}
|
1175
|
-
}
|
1176
|
-
|
1177
|
-
|
1178
|
-
void RegExpMacroAssemblerIA32::CallCFunction(ExternalReference function,
|
1179
|
-
int num_arguments) {
|
1180
|
-
__ mov(Operand(eax), Immediate(function));
|
1181
|
-
__ call(Operand(eax));
|
1182
|
-
if (OS::ActivationFrameAlignment() != 0) {
|
1183
|
-
__ mov(esp, Operand(esp, num_arguments * kPointerSize));
|
1184
|
-
} else {
|
1185
|
-
__ add(Operand(esp), Immediate(num_arguments * sizeof(int32_t)));
|
1186
|
-
}
|
1187
|
-
}
|
1188
|
-
|
1189
|
-
|
1190
1174
|
void RegExpMacroAssemblerIA32::LoadCurrentCharacterUnchecked(int cp_offset,
|
1191
1175
|
int characters) {
|
1192
1176
|
if (mode_ == ASCII) {
|
@@ -1214,6 +1198,6 @@ void RegExpMacroAssemblerIA32::LoadCurrentCharacterUnchecked(int cp_offset,
|
|
1214
1198
|
|
1215
1199
|
#undef __
|
1216
1200
|
|
1217
|
-
#endif //
|
1201
|
+
#endif // V8_INTERPRETED_REGEXP
|
1218
1202
|
|
1219
1203
|
}} // namespace v8::internal
|