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
@@ -77,7 +77,7 @@ struct Register {
|
|
77
77
|
return 1 << code_;
|
78
78
|
}
|
79
79
|
|
80
|
-
//
|
80
|
+
// Unfortunately we can't make this private in a struct.
|
81
81
|
int code_;
|
82
82
|
};
|
83
83
|
|
@@ -93,7 +93,7 @@ const Register no_reg = { -1 };
|
|
93
93
|
|
94
94
|
|
95
95
|
struct XMMRegister {
|
96
|
-
bool is_valid() const { return 0 <= code_ && code_ <
|
96
|
+
bool is_valid() const { return 0 <= code_ && code_ < 8; }
|
97
97
|
int code() const {
|
98
98
|
ASSERT(is_valid());
|
99
99
|
return code_;
|
@@ -229,8 +229,10 @@ enum ScaleFactor {
|
|
229
229
|
times_2 = 1,
|
230
230
|
times_4 = 2,
|
231
231
|
times_8 = 3,
|
232
|
+
times_int_size = times_4,
|
233
|
+
times_half_pointer_size = times_2,
|
232
234
|
times_pointer_size = times_4,
|
233
|
-
|
235
|
+
times_twice_pointer_size = times_8
|
234
236
|
};
|
235
237
|
|
236
238
|
|
@@ -239,6 +241,9 @@ class Operand BASE_EMBEDDED {
|
|
239
241
|
// reg
|
240
242
|
INLINE(explicit Operand(Register reg));
|
241
243
|
|
244
|
+
// XMM reg
|
245
|
+
INLINE(explicit Operand(XMMRegister xmm_reg));
|
246
|
+
|
242
247
|
// [disp/r]
|
243
248
|
INLINE(explicit Operand(int32_t disp, RelocInfo::Mode rmode));
|
244
249
|
// disp only must always be relocated
|
@@ -540,8 +545,12 @@ class Assembler : public Malloced {
|
|
540
545
|
void cmov(Condition cc, Register dst, Handle<Object> handle);
|
541
546
|
void cmov(Condition cc, Register dst, const Operand& src);
|
542
547
|
|
548
|
+
// Flag management.
|
549
|
+
void cld();
|
550
|
+
|
543
551
|
// Repetitive string instructions.
|
544
552
|
void rep_movs();
|
553
|
+
void rep_stos();
|
545
554
|
|
546
555
|
// Exchange two registers
|
547
556
|
void xchg(Register dst, Register src);
|
@@ -559,6 +568,8 @@ class Assembler : public Malloced {
|
|
559
568
|
void and_(const Operand& dst, const Immediate& x);
|
560
569
|
|
561
570
|
void cmpb(const Operand& op, int8_t imm8);
|
571
|
+
void cmpb(Register src, const Operand& dst);
|
572
|
+
void cmpb(const Operand& dst, Register src);
|
562
573
|
void cmpb_al(const Operand& op);
|
563
574
|
void cmpw_ax(const Operand& op);
|
564
575
|
void cmpw(const Operand& op, Immediate imm16);
|
@@ -624,6 +635,7 @@ class Assembler : public Malloced {
|
|
624
635
|
|
625
636
|
void test(Register reg, const Immediate& imm);
|
626
637
|
void test(Register reg, const Operand& op);
|
638
|
+
void test_b(Register reg, const Operand& op);
|
627
639
|
void test(const Operand& op, const Immediate& imm);
|
628
640
|
|
629
641
|
void xor_(Register dst, int32_t imm32);
|
@@ -663,6 +675,7 @@ class Assembler : public Malloced {
|
|
663
675
|
void call(Label* L);
|
664
676
|
void call(byte* entry, RelocInfo::Mode rmode);
|
665
677
|
void call(const Operand& adr);
|
678
|
+
void call(const ExternalReference& target);
|
666
679
|
void call(Handle<Code> code, RelocInfo::Mode rmode);
|
667
680
|
|
668
681
|
// Jumps
|
@@ -678,15 +691,18 @@ class Assembler : public Malloced {
|
|
678
691
|
|
679
692
|
// Floating-point operations
|
680
693
|
void fld(int i);
|
694
|
+
void fstp(int i);
|
681
695
|
|
682
696
|
void fld1();
|
683
697
|
void fldz();
|
698
|
+
void fldpi();
|
684
699
|
|
685
700
|
void fld_s(const Operand& adr);
|
686
701
|
void fld_d(const Operand& adr);
|
687
702
|
|
688
703
|
void fstp_s(const Operand& adr);
|
689
704
|
void fstp_d(const Operand& adr);
|
705
|
+
void fst_d(const Operand& adr);
|
690
706
|
|
691
707
|
void fild_s(const Operand& adr);
|
692
708
|
void fild_d(const Operand& adr);
|
@@ -696,6 +712,7 @@ class Assembler : public Malloced {
|
|
696
712
|
void fistp_s(const Operand& adr);
|
697
713
|
void fistp_d(const Operand& adr);
|
698
714
|
|
715
|
+
// The fisttp instructions require SSE3.
|
699
716
|
void fisttp_s(const Operand& adr);
|
700
717
|
void fisttp_d(const Operand& adr);
|
701
718
|
|
@@ -745,14 +762,18 @@ class Assembler : public Malloced {
|
|
745
762
|
void cvttsd2si(Register dst, const Operand& src);
|
746
763
|
|
747
764
|
void cvtsi2sd(XMMRegister dst, const Operand& src);
|
765
|
+
void cvtss2sd(XMMRegister dst, XMMRegister src);
|
748
766
|
|
749
767
|
void addsd(XMMRegister dst, XMMRegister src);
|
750
768
|
void subsd(XMMRegister dst, XMMRegister src);
|
751
769
|
void mulsd(XMMRegister dst, XMMRegister src);
|
752
770
|
void divsd(XMMRegister dst, XMMRegister src);
|
753
771
|
void xorpd(XMMRegister dst, XMMRegister src);
|
772
|
+
void sqrtsd(XMMRegister dst, XMMRegister src);
|
754
773
|
|
755
774
|
void comisd(XMMRegister dst, XMMRegister src);
|
775
|
+
void ucomisd(XMMRegister dst, XMMRegister src);
|
776
|
+
void movmskpd(Register dst, XMMRegister src);
|
756
777
|
|
757
778
|
void movdqa(XMMRegister dst, const Operand& src);
|
758
779
|
void movdqa(const Operand& dst, XMMRegister src);
|
@@ -763,6 +784,12 @@ class Assembler : public Malloced {
|
|
763
784
|
void movdbl(XMMRegister dst, const Operand& src);
|
764
785
|
void movdbl(const Operand& dst, XMMRegister src);
|
765
786
|
|
787
|
+
void movd(XMMRegister dst, const Operand& src);
|
788
|
+
void movsd(XMMRegister dst, XMMRegister src);
|
789
|
+
|
790
|
+
void pxor(XMMRegister dst, XMMRegister src);
|
791
|
+
void ptest(XMMRegister dst, XMMRegister src);
|
792
|
+
|
766
793
|
// Debugging
|
767
794
|
void Print();
|
768
795
|
|
@@ -806,7 +833,7 @@ class Assembler : public Malloced {
|
|
806
833
|
|
807
834
|
void emit_sse_operand(XMMRegister reg, const Operand& adr);
|
808
835
|
void emit_sse_operand(XMMRegister dst, XMMRegister src);
|
809
|
-
|
836
|
+
void emit_sse_operand(Register dst, XMMRegister src);
|
810
837
|
|
811
838
|
private:
|
812
839
|
byte* addr_at(int pos) { return buffer_ + pos; }
|
@@ -36,16 +36,37 @@ namespace internal {
|
|
36
36
|
#define __ ACCESS_MASM(masm)
|
37
37
|
|
38
38
|
|
39
|
-
void Builtins::Generate_Adaptor(MacroAssembler* masm,
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
//
|
45
|
-
//
|
46
|
-
//
|
47
|
-
|
48
|
-
|
39
|
+
void Builtins::Generate_Adaptor(MacroAssembler* masm,
|
40
|
+
CFunctionId id,
|
41
|
+
BuiltinExtraArguments extra_args) {
|
42
|
+
// ----------- S t a t e -------------
|
43
|
+
// -- eax : number of arguments excluding receiver
|
44
|
+
// -- edi : called function (only guaranteed when
|
45
|
+
// extra_args requires it)
|
46
|
+
// -- esi : context
|
47
|
+
// -- esp[0] : return address
|
48
|
+
// -- esp[4] : last argument
|
49
|
+
// -- ...
|
50
|
+
// -- esp[4 * argc] : first argument (argc == eax)
|
51
|
+
// -- esp[4 * (argc +1)] : receiver
|
52
|
+
// -----------------------------------
|
53
|
+
|
54
|
+
// Insert extra arguments.
|
55
|
+
int num_extra_args = 0;
|
56
|
+
if (extra_args == NEEDS_CALLED_FUNCTION) {
|
57
|
+
num_extra_args = 1;
|
58
|
+
Register scratch = ebx;
|
59
|
+
__ pop(scratch); // Save return address.
|
60
|
+
__ push(edi);
|
61
|
+
__ push(scratch); // Restore return address.
|
62
|
+
} else {
|
63
|
+
ASSERT(extra_args == NO_EXTRA_ARGUMENTS);
|
64
|
+
}
|
65
|
+
|
66
|
+
// JumpToExternalReference expects eax to contain the number of arguments
|
67
|
+
// including the receiver and the extra arguments.
|
68
|
+
__ add(Operand(eax), Immediate(num_extra_args + 1));
|
69
|
+
__ JumpToExternalReference(ExternalReference(id));
|
49
70
|
}
|
50
71
|
|
51
72
|
|
@@ -72,7 +93,10 @@ void Builtins::Generate_JSConstructCall(MacroAssembler* masm) {
|
|
72
93
|
// edi: called object
|
73
94
|
// eax: number of arguments
|
74
95
|
__ bind(&non_function_call);
|
75
|
-
|
96
|
+
// CALL_NON_FUNCTION expects the non-function constructor as receiver
|
97
|
+
// (instead of the original receiver from the call site). The receiver is
|
98
|
+
// stack element argc+1.
|
99
|
+
__ mov(Operand(esp, eax, times_4, kPointerSize), edi);
|
76
100
|
// Set expected number of arguments to zero (not changing eax).
|
77
101
|
__ Set(ebx, Immediate(0));
|
78
102
|
__ GetBuiltinEntry(edx, Builtins::CALL_NON_FUNCTION_AS_CONSTRUCTOR);
|
@@ -81,7 +105,8 @@ void Builtins::Generate_JSConstructCall(MacroAssembler* masm) {
|
|
81
105
|
}
|
82
106
|
|
83
107
|
|
84
|
-
void
|
108
|
+
static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
109
|
+
bool is_api_function) {
|
85
110
|
// Enter a construct frame.
|
86
111
|
__ EnterConstructFrame();
|
87
112
|
|
@@ -277,8 +302,17 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
|
|
277
302
|
__ j(greater_equal, &loop);
|
278
303
|
|
279
304
|
// Call the function.
|
280
|
-
|
281
|
-
|
305
|
+
if (is_api_function) {
|
306
|
+
__ mov(esi, FieldOperand(edi, JSFunction::kContextOffset));
|
307
|
+
Handle<Code> code = Handle<Code>(
|
308
|
+
Builtins::builtin(Builtins::HandleApiCallConstruct));
|
309
|
+
ParameterCount expected(0);
|
310
|
+
__ InvokeCode(code, expected, expected,
|
311
|
+
RelocInfo::CODE_TARGET, CALL_FUNCTION);
|
312
|
+
} else {
|
313
|
+
ParameterCount actual(eax);
|
314
|
+
__ InvokeFunction(edi, actual, CALL_FUNCTION);
|
315
|
+
}
|
282
316
|
|
283
317
|
// Restore context from the frame.
|
284
318
|
__ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset));
|
@@ -319,6 +353,16 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
|
|
319
353
|
}
|
320
354
|
|
321
355
|
|
356
|
+
void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
|
357
|
+
Generate_JSConstructStubHelper(masm, false);
|
358
|
+
}
|
359
|
+
|
360
|
+
|
361
|
+
void Builtins::Generate_JSConstructStubApi(MacroAssembler* masm) {
|
362
|
+
Generate_JSConstructStubHelper(masm, true);
|
363
|
+
}
|
364
|
+
|
365
|
+
|
322
366
|
static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
323
367
|
bool is_construct) {
|
324
368
|
// Clear the context before we push it when entering the JS frame.
|
@@ -396,33 +440,26 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
|
|
396
440
|
__ bind(&done);
|
397
441
|
}
|
398
442
|
|
399
|
-
// 2. Get the function to call from the stack
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
// Non-function called: Clear the function to force exception.
|
409
|
-
__ bind(&non_function);
|
410
|
-
__ xor_(edi, Operand(edi));
|
411
|
-
__ jmp(&done);
|
412
|
-
|
413
|
-
// Function called: Change context eagerly to get the right global object.
|
414
|
-
__ bind(&function);
|
415
|
-
__ mov(esi, FieldOperand(edi, JSFunction::kContextOffset));
|
443
|
+
// 2. Get the function to call (passed as receiver) from the stack, check
|
444
|
+
// if it is a function.
|
445
|
+
Label non_function;
|
446
|
+
// 1 ~ return address.
|
447
|
+
__ mov(edi, Operand(esp, eax, times_4, 1 * kPointerSize));
|
448
|
+
__ test(edi, Immediate(kSmiTagMask));
|
449
|
+
__ j(zero, &non_function, not_taken);
|
450
|
+
__ CmpObjectType(edi, JS_FUNCTION_TYPE, ecx);
|
451
|
+
__ j(not_equal, &non_function, not_taken);
|
416
452
|
|
417
|
-
__ bind(&done);
|
418
|
-
}
|
419
453
|
|
420
|
-
//
|
421
|
-
|
422
|
-
|
454
|
+
// 3a. Patch the first argument if necessary when calling a function.
|
455
|
+
Label shift_arguments;
|
456
|
+
{ Label convert_to_object, use_global_receiver, patch_receiver;
|
457
|
+
// Change context eagerly in case we need the global receiver.
|
458
|
+
__ mov(esi, FieldOperand(edi, JSFunction::kContextOffset));
|
423
459
|
|
460
|
+
__ mov(ebx, Operand(esp, eax, times_4, 0)); // First argument.
|
424
461
|
__ test(ebx, Immediate(kSmiTagMask));
|
425
|
-
__ j(zero, &
|
462
|
+
__ j(zero, &convert_to_object);
|
426
463
|
|
427
464
|
__ cmp(ebx, Factory::null_value());
|
428
465
|
__ j(equal, &use_global_receiver);
|
@@ -432,31 +469,28 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
|
|
432
469
|
__ mov(ecx, FieldOperand(ebx, HeapObject::kMapOffset));
|
433
470
|
__ movzx_b(ecx, FieldOperand(ecx, Map::kInstanceTypeOffset));
|
434
471
|
__ cmp(ecx, FIRST_JS_OBJECT_TYPE);
|
435
|
-
__ j(
|
472
|
+
__ j(below, &convert_to_object);
|
436
473
|
__ cmp(ecx, LAST_JS_OBJECT_TYPE);
|
437
|
-
__ j(
|
474
|
+
__ j(below_equal, &shift_arguments);
|
438
475
|
|
439
|
-
__ bind(&
|
440
|
-
__ EnterInternalFrame(); //
|
441
|
-
|
442
|
-
// Store the arguments count on the stack (smi tagged).
|
476
|
+
__ bind(&convert_to_object);
|
477
|
+
__ EnterInternalFrame(); // In order to preserve argument count.
|
443
478
|
__ SmiTag(eax);
|
444
479
|
__ push(eax);
|
445
480
|
|
446
|
-
__ push(edi); // save edi across the call
|
447
481
|
__ push(ebx);
|
448
482
|
__ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION);
|
449
483
|
__ mov(ebx, eax);
|
450
|
-
__ pop(edi); // restore edi after the call
|
451
484
|
|
452
|
-
// Get the arguments count and untag it.
|
453
485
|
__ pop(eax);
|
454
486
|
__ SmiUntag(eax);
|
455
|
-
|
456
487
|
__ LeaveInternalFrame();
|
488
|
+
// Restore the function to edi.
|
489
|
+
__ mov(edi, Operand(esp, eax, times_4, 1 * kPointerSize));
|
457
490
|
__ jmp(&patch_receiver);
|
458
491
|
|
459
|
-
// Use the global receiver object from the called function as the
|
492
|
+
// Use the global receiver object from the called function as the
|
493
|
+
// receiver.
|
460
494
|
__ bind(&use_global_receiver);
|
461
495
|
const int kGlobalIndex =
|
462
496
|
Context::kHeaderSize + Context::GLOBAL_INDEX * kPointerSize;
|
@@ -468,50 +502,55 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
|
|
468
502
|
__ bind(&patch_receiver);
|
469
503
|
__ mov(Operand(esp, eax, times_4, 0), ebx);
|
470
504
|
|
471
|
-
__
|
472
|
-
}
|
473
|
-
|
474
|
-
// 4. Check that the function really is a function.
|
475
|
-
{ Label done;
|
476
|
-
__ test(edi, Operand(edi));
|
477
|
-
__ j(not_zero, &done, taken);
|
478
|
-
__ xor_(ebx, Operand(ebx));
|
479
|
-
// CALL_NON_FUNCTION will expect to find the non-function callee on the
|
480
|
-
// expression stack of the caller. Transfer it from receiver to the
|
481
|
-
// caller's expression stack (and make the first argument the receiver
|
482
|
-
// for CALL_NON_FUNCTION) by decrementing the argument count.
|
483
|
-
__ dec(eax);
|
484
|
-
__ GetBuiltinEntry(edx, Builtins::CALL_NON_FUNCTION);
|
485
|
-
__ jmp(Handle<Code>(builtin(ArgumentsAdaptorTrampoline)),
|
486
|
-
RelocInfo::CODE_TARGET);
|
487
|
-
__ bind(&done);
|
505
|
+
__ jmp(&shift_arguments);
|
488
506
|
}
|
489
507
|
|
490
|
-
//
|
491
|
-
//
|
508
|
+
// 3b. Patch the first argument when calling a non-function. The
|
509
|
+
// CALL_NON_FUNCTION builtin expects the non-function callee as
|
510
|
+
// receiver, so overwrite the first argument which will ultimately
|
511
|
+
// become the receiver.
|
512
|
+
__ bind(&non_function);
|
513
|
+
__ mov(Operand(esp, eax, times_4, 0), edi);
|
514
|
+
// Clear edi to indicate a non-function being called.
|
515
|
+
__ xor_(edi, Operand(edi));
|
516
|
+
|
517
|
+
// 4. Shift arguments and return address one slot down on the stack
|
518
|
+
// (overwriting the original receiver). Adjust argument count to make
|
519
|
+
// the original first argument the new receiver.
|
520
|
+
__ bind(&shift_arguments);
|
492
521
|
{ Label loop;
|
493
522
|
__ mov(ecx, eax);
|
494
523
|
__ bind(&loop);
|
495
524
|
__ mov(ebx, Operand(esp, ecx, times_4, 0));
|
496
525
|
__ mov(Operand(esp, ecx, times_4, kPointerSize), ebx);
|
497
526
|
__ dec(ecx);
|
498
|
-
__ j(not_sign, &loop);
|
527
|
+
__ j(not_sign, &loop); // While non-negative (to copy return address).
|
499
528
|
__ pop(ebx); // Discard copy of return address.
|
500
529
|
__ dec(eax); // One fewer argument (first argument is new receiver).
|
501
530
|
}
|
502
531
|
|
503
|
-
//
|
504
|
-
|
505
|
-
|
506
|
-
__
|
507
|
-
|
508
|
-
__
|
509
|
-
__
|
510
|
-
|
511
|
-
__
|
532
|
+
// 5a. Call non-function via tail call to CALL_NON_FUNCTION builtin.
|
533
|
+
{ Label function;
|
534
|
+
__ test(edi, Operand(edi));
|
535
|
+
__ j(not_zero, &function, taken);
|
536
|
+
__ xor_(ebx, Operand(ebx));
|
537
|
+
__ GetBuiltinEntry(edx, Builtins::CALL_NON_FUNCTION);
|
538
|
+
__ jmp(Handle<Code>(builtin(ArgumentsAdaptorTrampoline)),
|
539
|
+
RelocInfo::CODE_TARGET);
|
540
|
+
__ bind(&function);
|
512
541
|
}
|
513
542
|
|
514
|
-
//
|
543
|
+
// 5b. Get the code to call from the function and check that the number of
|
544
|
+
// expected arguments matches what we're providing. If so, jump
|
545
|
+
// (tail-call) to the code in register edx without checking arguments.
|
546
|
+
__ mov(edx, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset));
|
547
|
+
__ mov(ebx,
|
548
|
+
FieldOperand(edx, SharedFunctionInfo::kFormalParameterCountOffset));
|
549
|
+
__ mov(edx, FieldOperand(edx, SharedFunctionInfo::kCodeOffset));
|
550
|
+
__ lea(edx, FieldOperand(edx, Code::kHeaderSize));
|
551
|
+
__ cmp(eax, Operand(ebx));
|
552
|
+
__ j(not_equal, Handle<Code>(builtin(ArgumentsAdaptorTrampoline)));
|
553
|
+
|
515
554
|
ParameterCount expected(0);
|
516
555
|
__ InvokeCode(Operand(edx), expected, expected, JUMP_FUNCTION);
|
517
556
|
}
|
@@ -606,9 +645,7 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
|
|
606
645
|
__ mov(eax, Operand(ebp, kIndexOffset));
|
607
646
|
__ jmp(&entry);
|
608
647
|
__ bind(&loop);
|
609
|
-
__ mov(
|
610
|
-
__ push(ecx);
|
611
|
-
__ push(eax);
|
648
|
+
__ mov(edx, Operand(ebp, 2 * kPointerSize)); // load arguments
|
612
649
|
|
613
650
|
// Use inline caching to speed up access to arguments.
|
614
651
|
Handle<Code> ic(Builtins::builtin(Builtins::KeyedLoadIC_Initialize));
|
@@ -618,8 +655,7 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
|
|
618
655
|
// we have generated an inline version of the keyed load. In this
|
619
656
|
// case, we know that we are not generating a test instruction next.
|
620
657
|
|
621
|
-
//
|
622
|
-
__ add(Operand(esp), Immediate(2 * kPointerSize));
|
658
|
+
// Push the nth argument.
|
623
659
|
__ push(eax);
|
624
660
|
|
625
661
|
// Update the index on the stack and in register eax.
|
@@ -761,38 +797,23 @@ static void AllocateEmptyJSArray(MacroAssembler* masm,
|
|
761
797
|
// register elements_array is scratched.
|
762
798
|
static void AllocateJSArray(MacroAssembler* masm,
|
763
799
|
Register array_function, // Array function.
|
764
|
-
Register array_size, // As a smi.
|
800
|
+
Register array_size, // As a smi, cannot be 0.
|
765
801
|
Register result,
|
766
802
|
Register elements_array,
|
767
803
|
Register elements_array_end,
|
768
804
|
Register scratch,
|
769
805
|
bool fill_with_hole,
|
770
806
|
Label* gc_required) {
|
771
|
-
|
807
|
+
ASSERT(scratch.is(edi)); // rep stos destination
|
808
|
+
ASSERT(!fill_with_hole || array_size.is(ecx)); // rep stos count
|
772
809
|
|
773
810
|
// Load the initial map from the array function.
|
774
811
|
__ mov(elements_array,
|
775
812
|
FieldOperand(array_function,
|
776
813
|
JSFunction::kPrototypeOrInitialMapOffset));
|
777
814
|
|
778
|
-
// Check whether an empty sized array is requested.
|
779
|
-
__ test(array_size, Operand(array_size));
|
780
|
-
__ j(not_zero, ¬_empty);
|
781
|
-
|
782
|
-
// If an empty array is requested allocate a small elements array anyway. This
|
783
|
-
// keeps the code below free of special casing for the empty array.
|
784
|
-
int size = JSArray::kSize + FixedArray::SizeFor(kPreallocatedArrayElements);
|
785
|
-
__ AllocateInNewSpace(size,
|
786
|
-
result,
|
787
|
-
elements_array_end,
|
788
|
-
scratch,
|
789
|
-
gc_required,
|
790
|
-
TAG_OBJECT);
|
791
|
-
__ jmp(&allocated);
|
792
|
-
|
793
815
|
// Allocate the JSArray object together with space for a FixedArray with the
|
794
816
|
// requested elements.
|
795
|
-
__ bind(¬_empty);
|
796
817
|
ASSERT(kSmiTagSize == 1 && kSmiTag == 0);
|
797
818
|
__ AllocateInNewSpace(JSArray::kSize + FixedArray::kHeaderSize,
|
798
819
|
times_half_pointer_size, // array_size is a smi.
|
@@ -809,7 +830,6 @@ static void AllocateJSArray(MacroAssembler* masm,
|
|
809
830
|
// elements_array: initial map
|
810
831
|
// elements_array_end: start of next object
|
811
832
|
// array_size: size of array (smi)
|
812
|
-
__ bind(&allocated);
|
813
833
|
__ mov(FieldOperand(result, JSObject::kMapOffset), elements_array);
|
814
834
|
__ mov(elements_array, Factory::empty_fixed_array());
|
815
835
|
__ mov(FieldOperand(result, JSArray::kPropertiesOffset), elements_array);
|
@@ -833,15 +853,6 @@ static void AllocateJSArray(MacroAssembler* masm,
|
|
833
853
|
__ SmiUntag(array_size); // Convert from smi to value.
|
834
854
|
__ mov(FieldOperand(elements_array, JSObject::kMapOffset),
|
835
855
|
Factory::fixed_array_map());
|
836
|
-
Label not_empty_2, fill_array;
|
837
|
-
__ test(array_size, Operand(array_size));
|
838
|
-
__ j(not_zero, ¬_empty_2);
|
839
|
-
// Length of the FixedArray is the number of pre-allocated elements even
|
840
|
-
// though the actual JSArray has length 0.
|
841
|
-
__ mov(FieldOperand(elements_array, Array::kLengthOffset),
|
842
|
-
Immediate(kPreallocatedArrayElements));
|
843
|
-
__ jmp(&fill_array);
|
844
|
-
__ bind(¬_empty_2);
|
845
856
|
// For non-empty JSArrays the length of the FixedArray and the JSArray is the
|
846
857
|
// same.
|
847
858
|
__ mov(FieldOperand(elements_array, Array::kLengthOffset), array_size);
|
@@ -849,20 +860,18 @@ static void AllocateJSArray(MacroAssembler* masm,
|
|
849
860
|
// Fill the allocated FixedArray with the hole value if requested.
|
850
861
|
// result: JSObject
|
851
862
|
// elements_array: elements array
|
852
|
-
// elements_array_end: start of next object
|
853
|
-
__ bind(&fill_array);
|
854
863
|
if (fill_with_hole) {
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
__
|
860
|
-
|
861
|
-
__
|
862
|
-
__
|
863
|
-
|
864
|
-
|
865
|
-
__
|
864
|
+
__ lea(edi, Operand(elements_array,
|
865
|
+
FixedArray::kHeaderSize - kHeapObjectTag));
|
866
|
+
|
867
|
+
__ push(eax);
|
868
|
+
__ mov(eax, Factory::the_hole_value());
|
869
|
+
|
870
|
+
__ cld();
|
871
|
+
__ rep_stos();
|
872
|
+
|
873
|
+
// Restore saved registers.
|
874
|
+
__ pop(eax);
|
866
875
|
}
|
867
876
|
}
|
868
877
|
|
@@ -884,7 +893,8 @@ static void AllocateJSArray(MacroAssembler* masm,
|
|
884
893
|
static void ArrayNativeCode(MacroAssembler* masm,
|
885
894
|
bool construct_call,
|
886
895
|
Label* call_generic_code) {
|
887
|
-
Label argc_one_or_more, argc_two_or_more, prepare_generic_code_call
|
896
|
+
Label argc_one_or_more, argc_two_or_more, prepare_generic_code_call,
|
897
|
+
empty_array, not_empty_array;
|
888
898
|
|
889
899
|
// Push the constructor and argc. No need to tag argc as a smi, as there will
|
890
900
|
// be no garbage collection with this on the stack.
|
@@ -900,6 +910,7 @@ static void ArrayNativeCode(MacroAssembler* masm,
|
|
900
910
|
__ test(eax, Operand(eax));
|
901
911
|
__ j(not_zero, &argc_one_or_more);
|
902
912
|
|
913
|
+
__ bind(&empty_array);
|
903
914
|
// Handle construction of an empty array.
|
904
915
|
AllocateEmptyJSArray(masm,
|
905
916
|
edi,
|
@@ -922,30 +933,46 @@ static void ArrayNativeCode(MacroAssembler* masm,
|
|
922
933
|
__ cmp(eax, 1);
|
923
934
|
__ j(not_equal, &argc_two_or_more);
|
924
935
|
ASSERT(kSmiTag == 0);
|
925
|
-
__
|
926
|
-
|
936
|
+
__ mov(ecx, Operand(esp, (push_count + 1) * kPointerSize));
|
937
|
+
__ test(ecx, Operand(ecx));
|
938
|
+
__ j(not_zero, ¬_empty_array);
|
939
|
+
|
940
|
+
// The single argument passed is zero, so we jump to the code above used to
|
941
|
+
// handle the case of no arguments passed. To adapt the stack for that we move
|
942
|
+
// the return address and the pushed constructor (if pushed) one stack slot up
|
943
|
+
// thereby removing the passed argument. Argc is also on the stack - at the
|
944
|
+
// bottom - and it needs to be changed from 1 to 0 to have the call into the
|
945
|
+
// runtime system work in case a GC is required.
|
946
|
+
for (int i = push_count; i > 0; i--) {
|
947
|
+
__ mov(eax, Operand(esp, i * kPointerSize));
|
948
|
+
__ mov(Operand(esp, (i + 1) * kPointerSize), eax);
|
949
|
+
}
|
950
|
+
__ add(Operand(esp), Immediate(2 * kPointerSize)); // Drop two stack slots.
|
951
|
+
__ push(Immediate(0)); // Treat this as a call with argc of zero.
|
952
|
+
__ jmp(&empty_array);
|
953
|
+
|
954
|
+
__ bind(¬_empty_array);
|
955
|
+
__ test(ecx, Immediate(kIntptrSignBit | kSmiTagMask));
|
927
956
|
__ j(not_zero, &prepare_generic_code_call);
|
928
957
|
|
929
958
|
// Handle construction of an empty array of a certain size. Get the size from
|
930
959
|
// the stack and bail out if size is to large to actually allocate an elements
|
931
960
|
// array.
|
932
|
-
__
|
933
|
-
ASSERT(kSmiTag == 0);
|
934
|
-
__ cmp(edx, JSObject::kInitialMaxFastElementArray << kSmiTagSize);
|
961
|
+
__ cmp(ecx, JSObject::kInitialMaxFastElementArray << kSmiTagSize);
|
935
962
|
__ j(greater_equal, &prepare_generic_code_call);
|
936
963
|
|
937
964
|
// edx: array_size (smi)
|
938
965
|
// edi: constructor
|
939
|
-
// esp[0]: argc
|
966
|
+
// esp[0]: argc (cannot be 0 here)
|
940
967
|
// esp[4]: constructor (only if construct_call)
|
941
968
|
// esp[8]: return address
|
942
969
|
// esp[C]: argument
|
943
970
|
AllocateJSArray(masm,
|
944
971
|
edi,
|
945
|
-
|
972
|
+
ecx,
|
946
973
|
eax,
|
947
974
|
ebx,
|
948
|
-
|
975
|
+
edx,
|
949
976
|
edi,
|
950
977
|
true,
|
951
978
|
&prepare_generic_code_call);
|