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
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright
|
1
|
+
// Copyright 2010 the V8 project authors. All rights reserved.
|
2
2
|
// Redistribution and use in source and binary forms, with or without
|
3
3
|
// modification, are permitted provided that the following conditions are
|
4
4
|
// met:
|
@@ -72,11 +72,10 @@ static void GenerateDictionaryLoad(MacroAssembler* masm,
|
|
72
72
|
// Check for the absence of an interceptor.
|
73
73
|
// Load the map into r0.
|
74
74
|
__ movq(r0, FieldOperand(r1, JSObject::kMapOffset));
|
75
|
-
// Test the has_named_interceptor bit in the map.
|
76
|
-
__ testl(FieldOperand(r0, Map::kInstanceAttributesOffset),
|
77
|
-
Immediate(1 << (Map::kHasNamedInterceptor + (3 * 8))));
|
78
75
|
|
79
|
-
//
|
76
|
+
// Bail out if the receiver has a named interceptor.
|
77
|
+
__ testl(FieldOperand(r0, Map::kBitFieldOffset),
|
78
|
+
Immediate(1 << Map::kHasNamedInterceptor));
|
80
79
|
__ j(not_zero, miss_label);
|
81
80
|
|
82
81
|
// Bail out if we have a JS global proxy object.
|
@@ -151,19 +150,100 @@ static void GenerateDictionaryLoad(MacroAssembler* masm,
|
|
151
150
|
}
|
152
151
|
|
153
152
|
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
153
|
+
static void GenerateNumberDictionaryLoad(MacroAssembler* masm,
|
154
|
+
Label* miss,
|
155
|
+
Register elements,
|
156
|
+
Register key,
|
157
|
+
Register r0,
|
158
|
+
Register r1,
|
159
|
+
Register r2) {
|
160
|
+
// Register use:
|
161
|
+
//
|
162
|
+
// elements - holds the slow-case elements of the receiver and is unchanged.
|
163
|
+
//
|
164
|
+
// key - holds the smi key on entry and is unchanged if a branch is
|
165
|
+
// performed to the miss label.
|
166
|
+
//
|
167
|
+
// Scratch registers:
|
168
|
+
//
|
169
|
+
// r0 - holds the untagged key on entry and holds the hash once computed.
|
170
|
+
// Holds the result on exit if the load succeeded.
|
171
|
+
//
|
172
|
+
// r1 - used to hold the capacity mask of the dictionary
|
173
|
+
//
|
174
|
+
// r2 - used for the index into the dictionary.
|
158
175
|
Label done;
|
159
|
-
|
160
|
-
|
161
|
-
//
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
__
|
176
|
+
|
177
|
+
// Compute the hash code from the untagged key. This must be kept in sync
|
178
|
+
// with ComputeIntegerHash in utils.h.
|
179
|
+
//
|
180
|
+
// hash = ~hash + (hash << 15);
|
181
|
+
__ movl(r1, r0);
|
182
|
+
__ notl(r0);
|
183
|
+
__ shll(r1, Immediate(15));
|
184
|
+
__ addl(r0, r1);
|
185
|
+
// hash = hash ^ (hash >> 12);
|
186
|
+
__ movl(r1, r0);
|
187
|
+
__ shrl(r1, Immediate(12));
|
188
|
+
__ xorl(r0, r1);
|
189
|
+
// hash = hash + (hash << 2);
|
190
|
+
__ leal(r0, Operand(r0, r0, times_4, 0));
|
191
|
+
// hash = hash ^ (hash >> 4);
|
192
|
+
__ movl(r1, r0);
|
193
|
+
__ shrl(r1, Immediate(4));
|
194
|
+
__ xorl(r0, r1);
|
195
|
+
// hash = hash * 2057;
|
196
|
+
__ imull(r0, r0, Immediate(2057));
|
197
|
+
// hash = hash ^ (hash >> 16);
|
198
|
+
__ movl(r1, r0);
|
199
|
+
__ shrl(r1, Immediate(16));
|
200
|
+
__ xorl(r0, r1);
|
201
|
+
|
202
|
+
// Compute capacity mask.
|
203
|
+
__ movq(r1, FieldOperand(elements, NumberDictionary::kCapacityOffset));
|
204
|
+
__ SmiToInteger32(r1, r1);
|
205
|
+
__ decl(r1);
|
206
|
+
|
207
|
+
// Generate an unrolled loop that performs a few probes before giving up.
|
208
|
+
const int kProbes = 4;
|
209
|
+
for (int i = 0; i < kProbes; i++) {
|
210
|
+
// Use r2 for index calculations and keep the hash intact in r0.
|
211
|
+
__ movq(r2, r0);
|
212
|
+
// Compute the masked index: (hash + i + i * i) & mask.
|
213
|
+
if (i > 0) {
|
214
|
+
__ addl(r2, Immediate(NumberDictionary::GetProbeOffset(i)));
|
215
|
+
}
|
216
|
+
__ and_(r2, r1);
|
217
|
+
|
218
|
+
// Scale the index by multiplying by the entry size.
|
219
|
+
ASSERT(NumberDictionary::kEntrySize == 3);
|
220
|
+
__ lea(r2, Operand(r2, r2, times_2, 0)); // r2 = r2 * 3
|
221
|
+
|
222
|
+
// Check if the key matches.
|
223
|
+
__ cmpq(key, FieldOperand(elements,
|
224
|
+
r2,
|
225
|
+
times_pointer_size,
|
226
|
+
NumberDictionary::kElementsStartOffset));
|
227
|
+
if (i != (kProbes - 1)) {
|
228
|
+
__ j(equal, &done);
|
229
|
+
} else {
|
230
|
+
__ j(not_equal, miss);
|
231
|
+
}
|
232
|
+
}
|
233
|
+
|
166
234
|
__ bind(&done);
|
235
|
+
// Check that the value is a normal propety.
|
236
|
+
const int kDetailsOffset =
|
237
|
+
NumberDictionary::kElementsStartOffset + 2 * kPointerSize;
|
238
|
+
ASSERT_EQ(NORMAL, 0);
|
239
|
+
__ Test(FieldOperand(elements, r2, times_pointer_size, kDetailsOffset),
|
240
|
+
Smi::FromInt(PropertyDetails::TypeField::mask()));
|
241
|
+
__ j(not_zero, miss);
|
242
|
+
|
243
|
+
// Get the value at the masked, scaled index.
|
244
|
+
const int kValueOffset =
|
245
|
+
NumberDictionary::kElementsStartOffset + kPointerSize;
|
246
|
+
__ movq(r0, FieldOperand(elements, r2, times_pointer_size, kValueOffset));
|
167
247
|
}
|
168
248
|
|
169
249
|
|
@@ -228,23 +308,38 @@ void KeyedStoreIC::RestoreInlinedVersion(Address address) {
|
|
228
308
|
}
|
229
309
|
|
230
310
|
|
231
|
-
void KeyedLoadIC::
|
232
|
-
ExternalReference const& f) {
|
311
|
+
void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
|
233
312
|
// ----------- S t a t e -------------
|
234
313
|
// -- rsp[0] : return address
|
235
314
|
// -- rsp[8] : name
|
236
315
|
// -- rsp[16] : receiver
|
237
316
|
// -----------------------------------
|
238
317
|
|
239
|
-
__ movq(rax, Operand(rsp, kPointerSize));
|
240
|
-
__ movq(rcx, Operand(rsp, 2 * kPointerSize));
|
241
318
|
__ pop(rbx);
|
242
|
-
__ push(
|
243
|
-
__ push(
|
319
|
+
__ push(Operand(rsp, 1 * kPointerSize)); // receiver
|
320
|
+
__ push(Operand(rsp, 1 * kPointerSize)); // name
|
244
321
|
__ push(rbx); // return address
|
245
322
|
|
246
323
|
// Perform tail call to the entry.
|
247
|
-
|
324
|
+
ExternalReference ref = ExternalReference(IC_Utility(kKeyedLoadIC_Miss));
|
325
|
+
__ TailCallExternalReference(ref, 2, 1);
|
326
|
+
}
|
327
|
+
|
328
|
+
|
329
|
+
void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
|
330
|
+
// ----------- S t a t e -------------
|
331
|
+
// -- rsp[0] : return address
|
332
|
+
// -- rsp[8] : name
|
333
|
+
// -- rsp[16] : receiver
|
334
|
+
// -----------------------------------
|
335
|
+
|
336
|
+
__ pop(rbx);
|
337
|
+
__ push(Operand(rsp, 1 * kPointerSize)); // receiver
|
338
|
+
__ push(Operand(rsp, 1 * kPointerSize)); // name
|
339
|
+
__ push(rbx); // return address
|
340
|
+
|
341
|
+
// Perform tail call to the entry.
|
342
|
+
__ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1);
|
248
343
|
}
|
249
344
|
|
250
345
|
|
@@ -256,6 +351,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
|
256
351
|
// -----------------------------------
|
257
352
|
Label slow, check_string, index_int, index_string;
|
258
353
|
Label check_pixel_array, probe_dictionary;
|
354
|
+
Label check_number_dictionary;
|
259
355
|
|
260
356
|
// Load name and receiver.
|
261
357
|
__ movq(rax, Operand(rsp, kPointerSize));
|
@@ -279,6 +375,9 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
|
279
375
|
|
280
376
|
// Check that the key is a smi.
|
281
377
|
__ JumpIfNotSmi(rax, &check_string);
|
378
|
+
// Save key in rbx in case we want it for the number dictionary
|
379
|
+
// case.
|
380
|
+
__ movq(rbx, rax);
|
282
381
|
__ SmiToInteger32(rax, rax);
|
283
382
|
// Get the elements array of the object.
|
284
383
|
__ bind(&index_int);
|
@@ -306,7 +405,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
|
306
405
|
__ bind(&check_pixel_array);
|
307
406
|
__ CompareRoot(FieldOperand(rcx, HeapObject::kMapOffset),
|
308
407
|
Heap::kPixelArrayMapRootIndex);
|
309
|
-
__ j(not_equal, &
|
408
|
+
__ j(not_equal, &check_number_dictionary);
|
310
409
|
__ cmpl(rax, FieldOperand(rcx, PixelArray::kLengthOffset));
|
311
410
|
__ j(above_equal, &slow);
|
312
411
|
__ movq(rcx, FieldOperand(rcx, PixelArray::kExternalPointerOffset));
|
@@ -314,10 +413,21 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
|
314
413
|
__ Integer32ToSmi(rax, rax);
|
315
414
|
__ ret(0);
|
316
415
|
|
416
|
+
__ bind(&check_number_dictionary);
|
417
|
+
// Check whether the elements is a number dictionary.
|
418
|
+
// rax: untagged index
|
419
|
+
// rbx: key
|
420
|
+
// rcx: elements
|
421
|
+
__ CompareRoot(FieldOperand(rcx, HeapObject::kMapOffset),
|
422
|
+
Heap::kHashTableMapRootIndex);
|
423
|
+
__ j(not_equal, &slow);
|
424
|
+
GenerateNumberDictionaryLoad(masm, &slow, rcx, rbx, rax, rdx, rdi);
|
425
|
+
__ ret(0);
|
426
|
+
|
317
427
|
// Slow case: Load name and receiver from stack and jump to runtime.
|
318
428
|
__ bind(&slow);
|
319
429
|
__ IncrementCounter(&Counters::keyed_load_generic_slow, 1);
|
320
|
-
|
430
|
+
GenerateRuntimeGetProperty(masm);
|
321
431
|
__ bind(&check_string);
|
322
432
|
// The key is not a smi.
|
323
433
|
// Is it a string?
|
@@ -390,7 +500,6 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
|
390
500
|
rdx,
|
391
501
|
rax,
|
392
502
|
DICTIONARY_CHECK_DONE);
|
393
|
-
GenerateCheckNonObjectOrLoaded(masm, &slow, rcx);
|
394
503
|
__ movq(rax, rcx);
|
395
504
|
__ IncrementCounter(&Counters::keyed_load_generic_symbol, 1);
|
396
505
|
__ ret(0);
|
@@ -414,7 +523,72 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) {
|
|
414
523
|
// -- rsp[8] : name
|
415
524
|
// -- rsp[16] : receiver
|
416
525
|
// -----------------------------------
|
417
|
-
|
526
|
+
Label miss;
|
527
|
+
Label index_not_smi;
|
528
|
+
Label index_out_of_range;
|
529
|
+
Label slow_char_code;
|
530
|
+
Label got_char_code;
|
531
|
+
|
532
|
+
Register receiver = rdx;
|
533
|
+
Register index = rax;
|
534
|
+
Register code = rbx;
|
535
|
+
Register scratch = rcx;
|
536
|
+
|
537
|
+
__ movq(index, Operand(rsp, 1 * kPointerSize));
|
538
|
+
__ movq(receiver, Operand(rsp, 2 * kPointerSize));
|
539
|
+
|
540
|
+
StringHelper::GenerateFastCharCodeAt(masm,
|
541
|
+
receiver,
|
542
|
+
index,
|
543
|
+
scratch,
|
544
|
+
code,
|
545
|
+
&miss, // When not a string.
|
546
|
+
&index_not_smi,
|
547
|
+
&index_out_of_range,
|
548
|
+
&slow_char_code);
|
549
|
+
// If we didn't bail out, code register contains smi tagged char
|
550
|
+
// code.
|
551
|
+
__ bind(&got_char_code);
|
552
|
+
StringHelper::GenerateCharFromCode(masm, code, rax, scratch, JUMP_FUNCTION);
|
553
|
+
#ifdef DEBUG
|
554
|
+
__ Abort("Unexpected fall-through from char from code tail call");
|
555
|
+
#endif
|
556
|
+
|
557
|
+
// Check if key is a heap number.
|
558
|
+
__ bind(&index_not_smi);
|
559
|
+
__ CompareRoot(FieldOperand(index, HeapObject::kMapOffset),
|
560
|
+
Heap::kHeapNumberMapRootIndex);
|
561
|
+
__ j(not_equal, &miss);
|
562
|
+
|
563
|
+
// Push receiver and key on the stack (now that we know they are a
|
564
|
+
// string and a number), and call runtime.
|
565
|
+
__ bind(&slow_char_code);
|
566
|
+
__ EnterInternalFrame();
|
567
|
+
__ push(receiver);
|
568
|
+
__ push(index);
|
569
|
+
__ CallRuntime(Runtime::kStringCharCodeAt, 2);
|
570
|
+
ASSERT(!code.is(rax));
|
571
|
+
__ movq(code, rax);
|
572
|
+
__ LeaveInternalFrame();
|
573
|
+
|
574
|
+
// Check if the runtime call returned NaN char code. If yes, return
|
575
|
+
// undefined. Otherwise, we can continue.
|
576
|
+
if (FLAG_debug_code) {
|
577
|
+
ASSERT(kSmiTag == 0);
|
578
|
+
__ JumpIfSmi(code, &got_char_code);
|
579
|
+
__ CompareRoot(FieldOperand(code, HeapObject::kMapOffset),
|
580
|
+
Heap::kHeapNumberMapRootIndex);
|
581
|
+
__ Assert(equal, "StringCharCodeAt must return smi or heap number");
|
582
|
+
}
|
583
|
+
__ CompareRoot(code, Heap::kNanValueRootIndex);
|
584
|
+
__ j(not_equal, &got_char_code);
|
585
|
+
|
586
|
+
__ bind(&index_out_of_range);
|
587
|
+
__ LoadRoot(rax, Heap::kUndefinedValueRootIndex);
|
588
|
+
__ ret(0);
|
589
|
+
|
590
|
+
__ bind(&miss);
|
591
|
+
GenerateMiss(masm);
|
418
592
|
}
|
419
593
|
|
420
594
|
|
@@ -554,21 +728,54 @@ void KeyedLoadIC::GenerateExternalArray(MacroAssembler* masm,
|
|
554
728
|
// Slow case: Load name and receiver from stack and jump to runtime.
|
555
729
|
__ bind(&slow);
|
556
730
|
__ IncrementCounter(&Counters::keyed_load_external_array_slow, 1);
|
557
|
-
|
731
|
+
GenerateRuntimeGetProperty(masm);
|
558
732
|
}
|
559
733
|
|
560
734
|
|
561
|
-
void KeyedLoadIC::
|
735
|
+
void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
|
562
736
|
// ----------- S t a t e -------------
|
563
737
|
// -- rsp[0] : return address
|
564
|
-
// -- rsp[8] :
|
738
|
+
// -- rsp[8] : key
|
565
739
|
// -- rsp[16] : receiver
|
566
740
|
// -----------------------------------
|
567
|
-
|
741
|
+
Label slow;
|
742
|
+
|
743
|
+
// Load key and receiver.
|
744
|
+
__ movq(rax, Operand(rsp, kPointerSize));
|
745
|
+
__ movq(rcx, Operand(rsp, 2 * kPointerSize));
|
746
|
+
|
747
|
+
// Check that the receiver isn't a smi.
|
748
|
+
__ JumpIfSmi(rcx, &slow);
|
749
|
+
|
750
|
+
// Check that the key is a smi.
|
751
|
+
__ JumpIfNotSmi(rax, &slow);
|
752
|
+
|
753
|
+
// Get the map of the receiver.
|
754
|
+
__ movq(rdx, FieldOperand(rcx, HeapObject::kMapOffset));
|
755
|
+
|
756
|
+
// Check that it has indexed interceptor and access checks
|
757
|
+
// are not enabled for this object.
|
758
|
+
__ movb(rdx, FieldOperand(rdx, Map::kBitFieldOffset));
|
759
|
+
__ andb(rdx, Immediate(kSlowCaseBitFieldMask));
|
760
|
+
__ cmpb(rdx, Immediate(1 << Map::kHasIndexedInterceptor));
|
761
|
+
__ j(not_zero, &slow);
|
762
|
+
|
763
|
+
// Everything is fine, call runtime.
|
764
|
+
__ pop(rdx);
|
765
|
+
__ push(rcx); // receiver
|
766
|
+
__ push(rax); // key
|
767
|
+
__ push(rdx); // return address
|
768
|
+
|
769
|
+
// Perform tail call to the entry.
|
770
|
+
__ TailCallExternalReference(ExternalReference(
|
771
|
+
IC_Utility(kKeyedLoadPropertyWithInterceptor)), 2, 1);
|
772
|
+
|
773
|
+
__ bind(&slow);
|
774
|
+
GenerateMiss(masm);
|
568
775
|
}
|
569
776
|
|
570
777
|
|
571
|
-
void KeyedStoreIC::
|
778
|
+
void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) {
|
572
779
|
// ----------- S t a t e -------------
|
573
780
|
// -- rax : value
|
574
781
|
// -- rsp[0] : return address
|
@@ -583,28 +790,27 @@ void KeyedStoreIC::Generate(MacroAssembler* masm, ExternalReference const& f) {
|
|
583
790
|
__ push(rcx); // return address
|
584
791
|
|
585
792
|
// Do tail-call to runtime routine.
|
586
|
-
|
793
|
+
ExternalReference ref = ExternalReference(IC_Utility(kKeyedStoreIC_Miss));
|
794
|
+
__ TailCallExternalReference(ref, 3, 1);
|
587
795
|
}
|
588
796
|
|
589
797
|
|
590
|
-
void KeyedStoreIC::
|
798
|
+
void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm) {
|
591
799
|
// ----------- S t a t e -------------
|
592
800
|
// -- rax : value
|
593
|
-
// -- rcx : transition map
|
594
801
|
// -- rsp[0] : return address
|
595
802
|
// -- rsp[8] : key
|
596
803
|
// -- rsp[16] : receiver
|
597
804
|
// -----------------------------------
|
598
805
|
|
599
|
-
__ pop(
|
806
|
+
__ pop(rcx);
|
600
807
|
__ push(Operand(rsp, 1 * kPointerSize)); // receiver
|
601
|
-
__ push(
|
808
|
+
__ push(Operand(rsp, 1 * kPointerSize)); // key
|
602
809
|
__ push(rax); // value
|
603
|
-
__ push(
|
810
|
+
__ push(rcx); // return address
|
604
811
|
|
605
812
|
// Do tail-call to runtime routine.
|
606
|
-
__ TailCallRuntime(
|
607
|
-
ExternalReference(IC_Utility(kSharedStoreIC_ExtendStorage)), 3, 1);
|
813
|
+
__ TailCallRuntime(Runtime::kSetProperty, 3, 1);
|
608
814
|
}
|
609
815
|
|
610
816
|
|
@@ -658,7 +864,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) {
|
|
658
864
|
|
659
865
|
// Slow case: call runtime.
|
660
866
|
__ bind(&slow);
|
661
|
-
|
867
|
+
GenerateRuntimeSetProperty(masm);
|
662
868
|
|
663
869
|
// Check whether the elements is a pixel array.
|
664
870
|
// rax: value
|
@@ -922,23 +1128,29 @@ void KeyedStoreIC::GenerateExternalArray(MacroAssembler* masm,
|
|
922
1128
|
|
923
1129
|
// Slow case: call runtime.
|
924
1130
|
__ bind(&slow);
|
925
|
-
|
1131
|
+
GenerateRuntimeSetProperty(masm);
|
926
1132
|
}
|
927
1133
|
|
928
1134
|
|
929
1135
|
void CallIC::GenerateMiss(MacroAssembler* masm, int argc) {
|
1136
|
+
// ----------- S t a t e -------------
|
1137
|
+
// rcx : function name
|
1138
|
+
// rsp[0] : return address
|
1139
|
+
// rsp[8] : argument argc
|
1140
|
+
// rsp[16] : argument argc - 1
|
1141
|
+
// ...
|
1142
|
+
// rsp[argc * 8] : argument 1
|
1143
|
+
// rsp[(argc + 1) * 8] : argument 0 = receiver
|
1144
|
+
// -----------------------------------
|
930
1145
|
// Get the receiver of the function from the stack; 1 ~ return address.
|
931
1146
|
__ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize));
|
932
|
-
// Get the name of the function to call from the stack.
|
933
|
-
// 2 ~ receiver, return address.
|
934
|
-
__ movq(rbx, Operand(rsp, (argc + 2) * kPointerSize));
|
935
1147
|
|
936
1148
|
// Enter an internal frame.
|
937
1149
|
__ EnterInternalFrame();
|
938
1150
|
|
939
1151
|
// Push the receiver and the name of the function.
|
940
1152
|
__ push(rdx);
|
941
|
-
__ push(
|
1153
|
+
__ push(rcx);
|
942
1154
|
|
943
1155
|
// Call the entry.
|
944
1156
|
CEntryStub stub(1);
|
@@ -976,20 +1188,18 @@ Object* CallIC_Miss(Arguments args);
|
|
976
1188
|
|
977
1189
|
void CallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
|
978
1190
|
// ----------- S t a t e -------------
|
979
|
-
//
|
980
|
-
// rsp[
|
981
|
-
// rsp[
|
1191
|
+
// rcx : function name
|
1192
|
+
// rsp[0] : return address
|
1193
|
+
// rsp[8] : argument argc
|
1194
|
+
// rsp[16] : argument argc - 1
|
982
1195
|
// ...
|
983
|
-
// rsp[argc * 8] argument 1
|
984
|
-
// rsp[(argc + 1) * 8] argument 0 =
|
985
|
-
// rsp[(argc + 2) * 8] function name
|
1196
|
+
// rsp[argc * 8] : argument 1
|
1197
|
+
// rsp[(argc + 1) * 8] : argument 0 = receiver
|
986
1198
|
// -----------------------------------
|
987
1199
|
Label number, non_number, non_string, boolean, probe, miss;
|
988
1200
|
|
989
1201
|
// Get the receiver of the function from the stack; 1 ~ return address.
|
990
1202
|
__ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize));
|
991
|
-
// Get the name of the function from the stack; 2 ~ return address, receiver
|
992
|
-
__ movq(rcx, Operand(rsp, (argc + 2) * kPointerSize));
|
993
1203
|
|
994
1204
|
// Probe the stub cache.
|
995
1205
|
Code::Flags flags =
|
@@ -1042,6 +1252,16 @@ static void GenerateNormalHelper(MacroAssembler* masm,
|
|
1042
1252
|
int argc,
|
1043
1253
|
bool is_global_object,
|
1044
1254
|
Label* miss) {
|
1255
|
+
// ----------- S t a t e -------------
|
1256
|
+
// rcx : function name
|
1257
|
+
// rdx : receiver
|
1258
|
+
// rsp[0] : return address
|
1259
|
+
// rsp[8] : argument argc
|
1260
|
+
// rsp[16] : argument argc - 1
|
1261
|
+
// ...
|
1262
|
+
// rsp[argc * 8] : argument 1
|
1263
|
+
// rsp[(argc + 1) * 8] : argument 0 = receiver
|
1264
|
+
// -----------------------------------
|
1045
1265
|
// Search dictionary - put result in register rdx.
|
1046
1266
|
GenerateDictionaryLoad(masm, miss, rax, rdx, rbx, rcx, CHECK_DICTIONARY);
|
1047
1267
|
|
@@ -1052,10 +1272,6 @@ static void GenerateNormalHelper(MacroAssembler* masm,
|
|
1052
1272
|
// Check that the value is a JavaScript function.
|
1053
1273
|
__ CmpObjectType(rdx, JS_FUNCTION_TYPE, rdx);
|
1054
1274
|
__ j(not_equal, miss);
|
1055
|
-
// Check that the function has been loaded.
|
1056
|
-
__ testb(FieldOperand(rdx, Map::kBitField2Offset),
|
1057
|
-
Immediate(1 << Map::kNeedsLoading));
|
1058
|
-
__ j(not_zero, miss);
|
1059
1275
|
|
1060
1276
|
// Patch the receiver with the global proxy if necessary.
|
1061
1277
|
if (is_global_object) {
|
@@ -1072,21 +1288,18 @@ static void GenerateNormalHelper(MacroAssembler* masm,
|
|
1072
1288
|
|
1073
1289
|
void CallIC::GenerateNormal(MacroAssembler* masm, int argc) {
|
1074
1290
|
// ----------- S t a t e -------------
|
1075
|
-
//
|
1076
|
-
// rsp[
|
1077
|
-
// rsp[
|
1291
|
+
// rcx : function name
|
1292
|
+
// rsp[0] : return address
|
1293
|
+
// rsp[8] : argument argc
|
1294
|
+
// rsp[16] : argument argc - 1
|
1078
1295
|
// ...
|
1079
|
-
// rsp[argc * 8] argument 1
|
1080
|
-
// rsp[(argc + 1) * 8] argument 0 =
|
1081
|
-
// rsp[(argc + 2) * 8] function name
|
1296
|
+
// rsp[argc * 8] : argument 1
|
1297
|
+
// rsp[(argc + 1) * 8] : argument 0 = receiver
|
1082
1298
|
// -----------------------------------
|
1083
|
-
|
1084
1299
|
Label miss, global_object, non_global_object;
|
1085
1300
|
|
1086
1301
|
// Get the receiver of the function from the stack.
|
1087
1302
|
__ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize));
|
1088
|
-
// Get the name of the function from the stack.
|
1089
|
-
__ movq(rcx, Operand(rsp, (argc + 2) * kPointerSize));
|
1090
1303
|
|
1091
1304
|
// Check that the receiver isn't a smi.
|
1092
1305
|
__ JumpIfSmi(rdx, &miss);
|
@@ -1153,22 +1366,21 @@ void LoadIC::ClearInlinedVersion(Address address) {
|
|
1153
1366
|
}
|
1154
1367
|
|
1155
1368
|
|
1156
|
-
void LoadIC::
|
1369
|
+
void LoadIC::GenerateMiss(MacroAssembler* masm) {
|
1157
1370
|
// ----------- S t a t e -------------
|
1158
1371
|
// -- rcx : name
|
1159
1372
|
// -- rsp[0] : return address
|
1160
1373
|
// -- rsp[8] : receiver
|
1161
1374
|
// -----------------------------------
|
1162
1375
|
|
1163
|
-
__ movq(rax, Operand(rsp, kPointerSize));
|
1164
|
-
|
1165
1376
|
__ pop(rbx);
|
1166
|
-
__ push(
|
1377
|
+
__ push(Operand(rsp, 0)); // receiver
|
1167
1378
|
__ push(rcx); // name
|
1168
1379
|
__ push(rbx); // return address
|
1169
1380
|
|
1170
1381
|
// Perform tail call to the entry.
|
1171
|
-
|
1382
|
+
ExternalReference ref = ExternalReference(IC_Utility(kLoadIC_Miss));
|
1383
|
+
__ TailCallExternalReference(ref, 2, 1);
|
1172
1384
|
}
|
1173
1385
|
|
1174
1386
|
|
@@ -1178,7 +1390,6 @@ void LoadIC::GenerateArrayLength(MacroAssembler* masm) {
|
|
1178
1390
|
// -- rsp[0] : return address
|
1179
1391
|
// -- rsp[8] : receiver
|
1180
1392
|
// -----------------------------------
|
1181
|
-
|
1182
1393
|
Label miss;
|
1183
1394
|
|
1184
1395
|
__ movq(rax, Operand(rsp, kPointerSize));
|
@@ -1195,7 +1406,6 @@ void LoadIC::GenerateFunctionPrototype(MacroAssembler* masm) {
|
|
1195
1406
|
// -- rsp[0] : return address
|
1196
1407
|
// -- rsp[8] : receiver
|
1197
1408
|
// -----------------------------------
|
1198
|
-
|
1199
1409
|
Label miss;
|
1200
1410
|
|
1201
1411
|
__ movq(rax, Operand(rsp, kPointerSize));
|
@@ -1226,24 +1436,12 @@ void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {
|
|
1226
1436
|
}
|
1227
1437
|
|
1228
1438
|
|
1229
|
-
void LoadIC::GenerateMiss(MacroAssembler* masm) {
|
1230
|
-
// ----------- S t a t e -------------
|
1231
|
-
// -- rcx : name
|
1232
|
-
// -- rsp[0] : return address
|
1233
|
-
// -- rsp[8] : receiver
|
1234
|
-
// -----------------------------------
|
1235
|
-
|
1236
|
-
Generate(masm, ExternalReference(IC_Utility(kLoadIC_Miss)));
|
1237
|
-
}
|
1238
|
-
|
1239
|
-
|
1240
1439
|
void LoadIC::GenerateNormal(MacroAssembler* masm) {
|
1241
1440
|
// ----------- S t a t e -------------
|
1242
1441
|
// -- rcx : name
|
1243
1442
|
// -- rsp[0] : return address
|
1244
1443
|
// -- rsp[8] : receiver
|
1245
1444
|
// -----------------------------------
|
1246
|
-
|
1247
1445
|
Label miss, probe, global;
|
1248
1446
|
|
1249
1447
|
__ movq(rax, Operand(rsp, kPointerSize));
|
@@ -1264,13 +1462,12 @@ void LoadIC::GenerateNormal(MacroAssembler* masm) {
|
|
1264
1462
|
|
1265
1463
|
// Check for non-global object that requires access check.
|
1266
1464
|
__ testl(FieldOperand(rbx, Map::kBitFieldOffset),
|
1267
|
-
|
1465
|
+
Immediate(1 << Map::kIsAccessCheckNeeded));
|
1268
1466
|
__ j(not_zero, &miss);
|
1269
1467
|
|
1270
1468
|
// Search the dictionary placing the result in rax.
|
1271
1469
|
__ bind(&probe);
|
1272
1470
|
GenerateDictionaryLoad(masm, &miss, rdx, rax, rbx, rcx, CHECK_DICTIONARY);
|
1273
|
-
GenerateCheckNonObjectOrLoaded(masm, &miss, rax);
|
1274
1471
|
__ ret(0);
|
1275
1472
|
|
1276
1473
|
// Global object access: Check access rights.
|
@@ -1281,7 +1478,7 @@ void LoadIC::GenerateNormal(MacroAssembler* masm) {
|
|
1281
1478
|
// Cache miss: Restore receiver from stack and jump to runtime.
|
1282
1479
|
__ bind(&miss);
|
1283
1480
|
__ movq(rax, Operand(rsp, 1 * kPointerSize));
|
1284
|
-
|
1481
|
+
GenerateMiss(masm);
|
1285
1482
|
}
|
1286
1483
|
|
1287
1484
|
|
@@ -1291,18 +1488,16 @@ void LoadIC::GenerateStringLength(MacroAssembler* masm) {
|
|
1291
1488
|
// -- rsp[0] : return address
|
1292
1489
|
// -- rsp[8] : receiver
|
1293
1490
|
// -----------------------------------
|
1294
|
-
|
1295
1491
|
Label miss;
|
1296
1492
|
|
1297
1493
|
__ movq(rax, Operand(rsp, kPointerSize));
|
1298
1494
|
|
1299
|
-
StubCompiler::GenerateLoadStringLength(masm, rax, rdx, &miss);
|
1495
|
+
StubCompiler::GenerateLoadStringLength(masm, rax, rdx, rbx, &miss);
|
1300
1496
|
__ bind(&miss);
|
1301
1497
|
StubCompiler::GenerateLoadMiss(masm, Code::LOAD_IC);
|
1302
1498
|
}
|
1303
1499
|
|
1304
1500
|
|
1305
|
-
|
1306
1501
|
bool LoadIC::PatchInlinedLoad(Address address, Object* map, int offset) {
|
1307
1502
|
// The address of the instruction following the call.
|
1308
1503
|
Address test_instruction_address =
|
@@ -1330,59 +1525,93 @@ bool LoadIC::PatchInlinedLoad(Address address, Object* map, int offset) {
|
|
1330
1525
|
return true;
|
1331
1526
|
}
|
1332
1527
|
|
1333
|
-
|
1528
|
+
|
1529
|
+
void StoreIC::GenerateMiss(MacroAssembler* masm) {
|
1334
1530
|
// ----------- S t a t e -------------
|
1335
1531
|
// -- rax : value
|
1336
1532
|
// -- rcx : name
|
1533
|
+
// -- rdx : receiver
|
1337
1534
|
// -- rsp[0] : return address
|
1338
|
-
// -- rsp[8] : receiver
|
1339
1535
|
// -----------------------------------
|
1536
|
+
|
1340
1537
|
__ pop(rbx);
|
1341
|
-
__ push(
|
1538
|
+
__ push(rdx); // receiver
|
1342
1539
|
__ push(rcx); // name
|
1343
1540
|
__ push(rax); // value
|
1344
1541
|
__ push(rbx); // return address
|
1345
1542
|
|
1346
1543
|
// Perform tail call to the entry.
|
1347
|
-
|
1544
|
+
ExternalReference ref = ExternalReference(IC_Utility(kStoreIC_Miss));
|
1545
|
+
__ TailCallExternalReference(ref, 3, 1);
|
1348
1546
|
}
|
1349
1547
|
|
1350
|
-
void StoreIC::GenerateExtendStorage(MacroAssembler* masm) {
|
1351
|
-
// ----------- S t a t e -------------
|
1352
|
-
// -- rax : value
|
1353
|
-
// -- rcx : Map (target of map transition)
|
1354
|
-
// -- rsp[0] : return address
|
1355
|
-
// -- rsp[8] : receiver
|
1356
|
-
// -----------------------------------
|
1357
|
-
|
1358
|
-
__ pop(rbx);
|
1359
|
-
__ push(Operand(rsp, 0)); // receiver
|
1360
|
-
__ push(rcx); // transition map
|
1361
|
-
__ push(rax); // value
|
1362
|
-
__ push(rbx); // return address
|
1363
|
-
|
1364
|
-
// Perform tail call to the entry.
|
1365
|
-
__ TailCallRuntime(
|
1366
|
-
ExternalReference(IC_Utility(kSharedStoreIC_ExtendStorage)), 3, 1);
|
1367
|
-
}
|
1368
1548
|
|
1369
1549
|
void StoreIC::GenerateMegamorphic(MacroAssembler* masm) {
|
1370
1550
|
// ----------- S t a t e -------------
|
1371
1551
|
// -- rax : value
|
1372
1552
|
// -- rcx : name
|
1553
|
+
// -- rdx : receiver
|
1373
1554
|
// -- rsp[0] : return address
|
1374
|
-
// -- rsp[8] : receiver
|
1375
1555
|
// -----------------------------------
|
1376
1556
|
|
1377
1557
|
// Get the receiver from the stack and probe the stub cache.
|
1378
|
-
__ movq(rdx, Operand(rsp, kPointerSize));
|
1379
1558
|
Code::Flags flags = Code::ComputeFlags(Code::STORE_IC,
|
1380
1559
|
NOT_IN_LOOP,
|
1381
1560
|
MONOMORPHIC);
|
1382
1561
|
StubCache::GenerateProbe(masm, flags, rdx, rcx, rbx, no_reg);
|
1383
1562
|
|
1384
1563
|
// Cache miss: Jump to runtime.
|
1385
|
-
|
1564
|
+
GenerateMiss(masm);
|
1565
|
+
}
|
1566
|
+
|
1567
|
+
|
1568
|
+
void StoreIC::GenerateArrayLength(MacroAssembler* masm) {
|
1569
|
+
// ----------- S t a t e -------------
|
1570
|
+
// -- rax : value
|
1571
|
+
// -- rcx : name
|
1572
|
+
// -- rdx : receiver
|
1573
|
+
// -- rsp[0] : return address
|
1574
|
+
// -----------------------------------
|
1575
|
+
//
|
1576
|
+
// This accepts as a receiver anything JSObject::SetElementsLength accepts
|
1577
|
+
// (currently anything except for external and pixel arrays which means
|
1578
|
+
// anything with elements of FixedArray type.), but currently is restricted
|
1579
|
+
// to JSArray.
|
1580
|
+
// Value must be a number, but only smis are accepted as the most common case.
|
1581
|
+
|
1582
|
+
Label miss;
|
1583
|
+
|
1584
|
+
Register receiver = rdx;
|
1585
|
+
Register value = rax;
|
1586
|
+
Register scratch = rbx;
|
1587
|
+
|
1588
|
+
// Check that the receiver isn't a smi.
|
1589
|
+
__ JumpIfSmi(receiver, &miss);
|
1590
|
+
|
1591
|
+
// Check that the object is a JS array.
|
1592
|
+
__ CmpObjectType(receiver, JS_ARRAY_TYPE, scratch);
|
1593
|
+
__ j(not_equal, &miss);
|
1594
|
+
|
1595
|
+
// Check that elements are FixedArray.
|
1596
|
+
__ movq(scratch, FieldOperand(receiver, JSArray::kElementsOffset));
|
1597
|
+
__ CmpObjectType(scratch, FIXED_ARRAY_TYPE, scratch);
|
1598
|
+
__ j(not_equal, &miss);
|
1599
|
+
|
1600
|
+
// Check that value is a smi.
|
1601
|
+
__ JumpIfNotSmi(value, &miss);
|
1602
|
+
|
1603
|
+
// Prepare tail call to StoreIC_ArrayLength.
|
1604
|
+
__ pop(scratch);
|
1605
|
+
__ push(receiver);
|
1606
|
+
__ push(value);
|
1607
|
+
__ push(scratch); // return address
|
1608
|
+
|
1609
|
+
ExternalReference ref = ExternalReference(IC_Utility(kStoreIC_ArrayLength));
|
1610
|
+
__ TailCallExternalReference(ref, 2, 1);
|
1611
|
+
|
1612
|
+
__ bind(&miss);
|
1613
|
+
|
1614
|
+
GenerateMiss(masm);
|
1386
1615
|
}
|
1387
1616
|
|
1388
1617
|
|