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
@@ -93,6 +93,38 @@ Code* StubCache::Set(String* name, Map* map, Code* code) {
|
|
93
93
|
}
|
94
94
|
|
95
95
|
|
96
|
+
Object* StubCache::ComputeLoadNonexistent(String* name, JSObject* receiver) {
|
97
|
+
// If no global objects are present in the prototype chain, the load
|
98
|
+
// nonexistent IC stub can be shared for all names for a given map
|
99
|
+
// and we use the empty string for the map cache in that case. If
|
100
|
+
// there are global objects involved, we need to check global
|
101
|
+
// property cells in the stub and therefore the stub will be
|
102
|
+
// specific to the name.
|
103
|
+
String* cache_name = Heap::empty_string();
|
104
|
+
if (receiver->IsGlobalObject()) cache_name = name;
|
105
|
+
JSObject* last = receiver;
|
106
|
+
while (last->GetPrototype() != Heap::null_value()) {
|
107
|
+
last = JSObject::cast(last->GetPrototype());
|
108
|
+
if (last->IsGlobalObject()) cache_name = name;
|
109
|
+
}
|
110
|
+
// Compile the stub that is either shared for all names or
|
111
|
+
// name specific if there are global objects involved.
|
112
|
+
Code::Flags flags =
|
113
|
+
Code::ComputeMonomorphicFlags(Code::LOAD_IC, NONEXISTENT);
|
114
|
+
Object* code = receiver->map()->FindInCodeCache(cache_name, flags);
|
115
|
+
if (code->IsUndefined()) {
|
116
|
+
LoadStubCompiler compiler;
|
117
|
+
code = compiler.CompileLoadNonexistent(cache_name, receiver, last);
|
118
|
+
if (code->IsFailure()) return code;
|
119
|
+
PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), cache_name));
|
120
|
+
Object* result =
|
121
|
+
receiver->map()->UpdateCodeCache(cache_name, Code::cast(code));
|
122
|
+
if (result->IsFailure()) return result;
|
123
|
+
}
|
124
|
+
return Set(name, receiver->map(), Code::cast(code));
|
125
|
+
}
|
126
|
+
|
127
|
+
|
96
128
|
Object* StubCache::ComputeLoadField(String* name,
|
97
129
|
JSObject* receiver,
|
98
130
|
JSObject* holder,
|
@@ -103,9 +135,9 @@ Object* StubCache::ComputeLoadField(String* name,
|
|
103
135
|
LoadStubCompiler compiler;
|
104
136
|
code = compiler.CompileLoadField(receiver, holder, field_index, name);
|
105
137
|
if (code->IsFailure()) return code;
|
106
|
-
|
138
|
+
PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
|
107
139
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
108
|
-
if (result->IsFailure()) return
|
140
|
+
if (result->IsFailure()) return result;
|
109
141
|
}
|
110
142
|
return Set(name, receiver->map(), Code::cast(code));
|
111
143
|
}
|
@@ -122,9 +154,9 @@ Object* StubCache::ComputeLoadCallback(String* name,
|
|
122
154
|
LoadStubCompiler compiler;
|
123
155
|
code = compiler.CompileLoadCallback(name, receiver, holder, callback);
|
124
156
|
if (code->IsFailure()) return code;
|
125
|
-
|
157
|
+
PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
|
126
158
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
127
|
-
if (result->IsFailure()) return
|
159
|
+
if (result->IsFailure()) return result;
|
128
160
|
}
|
129
161
|
return Set(name, receiver->map(), Code::cast(code));
|
130
162
|
}
|
@@ -141,9 +173,9 @@ Object* StubCache::ComputeLoadConstant(String* name,
|
|
141
173
|
LoadStubCompiler compiler;
|
142
174
|
code = compiler.CompileLoadConstant(receiver, holder, value, name);
|
143
175
|
if (code->IsFailure()) return code;
|
144
|
-
|
176
|
+
PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
|
145
177
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
146
|
-
if (result->IsFailure()) return
|
178
|
+
if (result->IsFailure()) return result;
|
147
179
|
}
|
148
180
|
return Set(name, receiver->map(), Code::cast(code));
|
149
181
|
}
|
@@ -158,9 +190,9 @@ Object* StubCache::ComputeLoadInterceptor(String* name,
|
|
158
190
|
LoadStubCompiler compiler;
|
159
191
|
code = compiler.CompileLoadInterceptor(receiver, holder, name);
|
160
192
|
if (code->IsFailure()) return code;
|
161
|
-
|
193
|
+
PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
|
162
194
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
163
|
-
if (result->IsFailure()) return
|
195
|
+
if (result->IsFailure()) return result;
|
164
196
|
}
|
165
197
|
return Set(name, receiver->map(), Code::cast(code));
|
166
198
|
}
|
@@ -187,9 +219,9 @@ Object* StubCache::ComputeLoadGlobal(String* name,
|
|
187
219
|
name,
|
188
220
|
is_dont_delete);
|
189
221
|
if (code->IsFailure()) return code;
|
190
|
-
|
222
|
+
PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
|
191
223
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
192
|
-
if (result->IsFailure()) return
|
224
|
+
if (result->IsFailure()) return result;
|
193
225
|
}
|
194
226
|
return Set(name, receiver->map(), Code::cast(code));
|
195
227
|
}
|
@@ -205,7 +237,7 @@ Object* StubCache::ComputeKeyedLoadField(String* name,
|
|
205
237
|
KeyedLoadStubCompiler compiler;
|
206
238
|
code = compiler.CompileLoadField(name, receiver, holder, field_index);
|
207
239
|
if (code->IsFailure()) return code;
|
208
|
-
|
240
|
+
PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
|
209
241
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
210
242
|
if (result->IsFailure()) return result;
|
211
243
|
}
|
@@ -224,7 +256,7 @@ Object* StubCache::ComputeKeyedLoadConstant(String* name,
|
|
224
256
|
KeyedLoadStubCompiler compiler;
|
225
257
|
code = compiler.CompileLoadConstant(name, receiver, holder, value);
|
226
258
|
if (code->IsFailure()) return code;
|
227
|
-
|
259
|
+
PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
|
228
260
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
229
261
|
if (result->IsFailure()) return result;
|
230
262
|
}
|
@@ -242,7 +274,7 @@ Object* StubCache::ComputeKeyedLoadInterceptor(String* name,
|
|
242
274
|
KeyedLoadStubCompiler compiler;
|
243
275
|
code = compiler.CompileLoadInterceptor(receiver, holder, name);
|
244
276
|
if (code->IsFailure()) return code;
|
245
|
-
|
277
|
+
PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
|
246
278
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
247
279
|
if (result->IsFailure()) return result;
|
248
280
|
}
|
@@ -261,7 +293,7 @@ Object* StubCache::ComputeKeyedLoadCallback(String* name,
|
|
261
293
|
KeyedLoadStubCompiler compiler;
|
262
294
|
code = compiler.CompileLoadCallback(name, receiver, holder, callback);
|
263
295
|
if (code->IsFailure()) return code;
|
264
|
-
|
296
|
+
PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
|
265
297
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
266
298
|
if (result->IsFailure()) return result;
|
267
299
|
}
|
@@ -279,7 +311,7 @@ Object* StubCache::ComputeKeyedLoadArrayLength(String* name,
|
|
279
311
|
KeyedLoadStubCompiler compiler;
|
280
312
|
code = compiler.CompileLoadArrayLength(name);
|
281
313
|
if (code->IsFailure()) return code;
|
282
|
-
|
314
|
+
PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
|
283
315
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
284
316
|
if (result->IsFailure()) return result;
|
285
317
|
}
|
@@ -296,7 +328,7 @@ Object* StubCache::ComputeKeyedLoadStringLength(String* name,
|
|
296
328
|
KeyedLoadStubCompiler compiler;
|
297
329
|
code = compiler.CompileLoadStringLength(name);
|
298
330
|
if (code->IsFailure()) return code;
|
299
|
-
|
331
|
+
PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
|
300
332
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
301
333
|
if (result->IsFailure()) return result;
|
302
334
|
}
|
@@ -313,7 +345,7 @@ Object* StubCache::ComputeKeyedLoadFunctionPrototype(String* name,
|
|
313
345
|
KeyedLoadStubCompiler compiler;
|
314
346
|
code = compiler.CompileLoadFunctionPrototype(name);
|
315
347
|
if (code->IsFailure()) return code;
|
316
|
-
|
348
|
+
PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
|
317
349
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
318
350
|
if (result->IsFailure()) return result;
|
319
351
|
}
|
@@ -332,7 +364,7 @@ Object* StubCache::ComputeStoreField(String* name,
|
|
332
364
|
StoreStubCompiler compiler;
|
333
365
|
code = compiler.CompileStoreField(receiver, field_index, transition, name);
|
334
366
|
if (code->IsFailure()) return code;
|
335
|
-
|
367
|
+
PROFILE(CodeCreateEvent(Logger::STORE_IC_TAG, Code::cast(code), name));
|
336
368
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
337
369
|
if (result->IsFailure()) return result;
|
338
370
|
}
|
@@ -349,9 +381,9 @@ Object* StubCache::ComputeStoreGlobal(String* name,
|
|
349
381
|
StoreStubCompiler compiler;
|
350
382
|
code = compiler.CompileStoreGlobal(receiver, cell, name);
|
351
383
|
if (code->IsFailure()) return code;
|
352
|
-
|
384
|
+
PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
|
353
385
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
354
|
-
if (result->IsFailure()) return
|
386
|
+
if (result->IsFailure()) return result;
|
355
387
|
}
|
356
388
|
return Set(name, receiver->map(), Code::cast(code));
|
357
389
|
}
|
@@ -367,7 +399,7 @@ Object* StubCache::ComputeStoreCallback(String* name,
|
|
367
399
|
StoreStubCompiler compiler;
|
368
400
|
code = compiler.CompileStoreCallback(receiver, callback, name);
|
369
401
|
if (code->IsFailure()) return code;
|
370
|
-
|
402
|
+
PROFILE(CodeCreateEvent(Logger::STORE_IC_TAG, Code::cast(code), name));
|
371
403
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
372
404
|
if (result->IsFailure()) return result;
|
373
405
|
}
|
@@ -384,7 +416,7 @@ Object* StubCache::ComputeStoreInterceptor(String* name,
|
|
384
416
|
StoreStubCompiler compiler;
|
385
417
|
code = compiler.CompileStoreInterceptor(receiver, name);
|
386
418
|
if (code->IsFailure()) return code;
|
387
|
-
|
419
|
+
PROFILE(CodeCreateEvent(Logger::STORE_IC_TAG, Code::cast(code), name));
|
388
420
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
389
421
|
if (result->IsFailure()) return result;
|
390
422
|
}
|
@@ -401,7 +433,8 @@ Object* StubCache::ComputeKeyedStoreField(String* name, JSObject* receiver,
|
|
401
433
|
KeyedStoreStubCompiler compiler;
|
402
434
|
code = compiler.CompileStoreField(receiver, field_index, transition, name);
|
403
435
|
if (code->IsFailure()) return code;
|
404
|
-
|
436
|
+
PROFILE(CodeCreateEvent(
|
437
|
+
Logger::KEYED_STORE_IC_TAG, Code::cast(code), name));
|
405
438
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
406
439
|
if (result->IsFailure()) return result;
|
407
440
|
}
|
@@ -435,14 +468,6 @@ Object* StubCache::ComputeCallConstant(int argc,
|
|
435
468
|
argc);
|
436
469
|
Object* code = map->FindInCodeCache(name, flags);
|
437
470
|
if (code->IsUndefined()) {
|
438
|
-
if (object->IsJSObject()) {
|
439
|
-
Object* opt =
|
440
|
-
Top::LookupSpecialFunction(JSObject::cast(object), holder, function);
|
441
|
-
if (opt->IsJSFunction()) {
|
442
|
-
check = StubCompiler::JSARRAY_HAS_FAST_ELEMENTS_CHECK;
|
443
|
-
function = JSFunction::cast(opt);
|
444
|
-
}
|
445
|
-
}
|
446
471
|
// If the function hasn't been compiled yet, we cannot do it now
|
447
472
|
// because it may cause GC. To avoid this issue, we return an
|
448
473
|
// internal error which will make sure we do not update any
|
@@ -453,7 +478,7 @@ Object* StubCache::ComputeCallConstant(int argc,
|
|
453
478
|
code = compiler.CompileCallConstant(object, holder, function, name, check);
|
454
479
|
if (code->IsFailure()) return code;
|
455
480
|
ASSERT_EQ(flags, Code::cast(code)->flags());
|
456
|
-
|
481
|
+
PROFILE(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
|
457
482
|
Object* result = map->UpdateCodeCache(name, Code::cast(code));
|
458
483
|
if (result->IsFailure()) return result;
|
459
484
|
}
|
@@ -484,10 +509,13 @@ Object* StubCache::ComputeCallField(int argc,
|
|
484
509
|
Object* code = map->FindInCodeCache(name, flags);
|
485
510
|
if (code->IsUndefined()) {
|
486
511
|
CallStubCompiler compiler(argc, in_loop);
|
487
|
-
code = compiler.CompileCallField(object,
|
512
|
+
code = compiler.CompileCallField(JSObject::cast(object),
|
513
|
+
holder,
|
514
|
+
index,
|
515
|
+
name);
|
488
516
|
if (code->IsFailure()) return code;
|
489
517
|
ASSERT_EQ(flags, Code::cast(code)->flags());
|
490
|
-
|
518
|
+
PROFILE(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
|
491
519
|
Object* result = map->UpdateCodeCache(name, Code::cast(code));
|
492
520
|
if (result->IsFailure()) return result;
|
493
521
|
}
|
@@ -518,10 +546,12 @@ Object* StubCache::ComputeCallInterceptor(int argc,
|
|
518
546
|
Object* code = map->FindInCodeCache(name, flags);
|
519
547
|
if (code->IsUndefined()) {
|
520
548
|
CallStubCompiler compiler(argc, NOT_IN_LOOP);
|
521
|
-
code = compiler.CompileCallInterceptor(object,
|
549
|
+
code = compiler.CompileCallInterceptor(JSObject::cast(object),
|
550
|
+
holder,
|
551
|
+
name);
|
522
552
|
if (code->IsFailure()) return code;
|
523
553
|
ASSERT_EQ(flags, Code::cast(code)->flags());
|
524
|
-
|
554
|
+
PROFILE(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
|
525
555
|
Object* result = map->UpdateCodeCache(name, Code::cast(code));
|
526
556
|
if (result->IsFailure()) return result;
|
527
557
|
}
|
@@ -559,9 +589,9 @@ Object* StubCache::ComputeCallGlobal(int argc,
|
|
559
589
|
code = compiler.CompileCallGlobal(receiver, holder, cell, function, name);
|
560
590
|
if (code->IsFailure()) return code;
|
561
591
|
ASSERT_EQ(flags, Code::cast(code)->flags());
|
562
|
-
|
592
|
+
PROFILE(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
|
563
593
|
Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
|
564
|
-
if (result->IsFailure()) return
|
594
|
+
if (result->IsFailure()) return result;
|
565
595
|
}
|
566
596
|
return Set(name, receiver->map(), Code::cast(code));
|
567
597
|
}
|
@@ -704,8 +734,8 @@ Object* StubCache::ComputeLazyCompile(int argc) {
|
|
704
734
|
if (result->IsCode()) {
|
705
735
|
Code* code = Code::cast(result);
|
706
736
|
USE(code);
|
707
|
-
|
708
|
-
|
737
|
+
PROFILE(CodeCreateEvent(Logger::LAZY_COMPILE_TAG,
|
738
|
+
code, code->arguments_count()));
|
709
739
|
}
|
710
740
|
return result;
|
711
741
|
}
|
@@ -785,6 +815,10 @@ Object* StoreCallbackProperty(Arguments args) {
|
|
785
815
|
return *value;
|
786
816
|
}
|
787
817
|
|
818
|
+
|
819
|
+
static const int kAccessorInfoOffsetInInterceptorArgs = 2;
|
820
|
+
|
821
|
+
|
788
822
|
/**
|
789
823
|
* Attempts to load a property with an interceptor (which must be present),
|
790
824
|
* but doesn't search the prototype chain.
|
@@ -793,11 +827,12 @@ Object* StoreCallbackProperty(Arguments args) {
|
|
793
827
|
* provide any value for the given name.
|
794
828
|
*/
|
795
829
|
Object* LoadPropertyWithInterceptorOnly(Arguments args) {
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
830
|
+
Handle<String> name_handle = args.at<String>(0);
|
831
|
+
Handle<InterceptorInfo> interceptor_info = args.at<InterceptorInfo>(1);
|
832
|
+
ASSERT(kAccessorInfoOffsetInInterceptorArgs == 2);
|
833
|
+
ASSERT(args[2]->IsJSObject()); // Receiver.
|
834
|
+
ASSERT(args[3]->IsJSObject()); // Holder.
|
835
|
+
ASSERT(args.length() == 5); // Last arg is data object.
|
801
836
|
|
802
837
|
Address getter_address = v8::ToCData<Address>(interceptor_info->getter());
|
803
838
|
v8::NamedPropertyGetter getter =
|
@@ -806,8 +841,8 @@ Object* LoadPropertyWithInterceptorOnly(Arguments args) {
|
|
806
841
|
|
807
842
|
{
|
808
843
|
// Use the interceptor getter.
|
809
|
-
|
810
|
-
|
844
|
+
v8::AccessorInfo info(args.arguments() -
|
845
|
+
kAccessorInfoOffsetInInterceptorArgs);
|
811
846
|
HandleScope scope;
|
812
847
|
v8::Handle<v8::Value> r;
|
813
848
|
{
|
@@ -845,11 +880,12 @@ static Object* ThrowReferenceError(String* name) {
|
|
845
880
|
|
846
881
|
static Object* LoadWithInterceptor(Arguments* args,
|
847
882
|
PropertyAttributes* attrs) {
|
848
|
-
Handle<
|
849
|
-
Handle<
|
850
|
-
|
851
|
-
Handle<
|
852
|
-
Handle<
|
883
|
+
Handle<String> name_handle = args->at<String>(0);
|
884
|
+
Handle<InterceptorInfo> interceptor_info = args->at<InterceptorInfo>(1);
|
885
|
+
ASSERT(kAccessorInfoOffsetInInterceptorArgs == 2);
|
886
|
+
Handle<JSObject> receiver_handle = args->at<JSObject>(2);
|
887
|
+
Handle<JSObject> holder_handle = args->at<JSObject>(3);
|
888
|
+
ASSERT(args->length() == 5); // Last arg is data object.
|
853
889
|
|
854
890
|
Address getter_address = v8::ToCData<Address>(interceptor_info->getter());
|
855
891
|
v8::NamedPropertyGetter getter =
|
@@ -858,8 +894,8 @@ static Object* LoadWithInterceptor(Arguments* args,
|
|
858
894
|
|
859
895
|
{
|
860
896
|
// Use the interceptor getter.
|
861
|
-
|
862
|
-
|
897
|
+
v8::AccessorInfo info(args->arguments() -
|
898
|
+
kAccessorInfoOffsetInInterceptorArgs);
|
863
899
|
HandleScope scope;
|
864
900
|
v8::Handle<v8::Value> r;
|
865
901
|
{
|
@@ -894,7 +930,7 @@ Object* LoadPropertyWithInterceptorForLoad(Arguments args) {
|
|
894
930
|
|
895
931
|
// If the property is present, return it.
|
896
932
|
if (attr != ABSENT) return result;
|
897
|
-
return ThrowReferenceError(String::cast(args[
|
933
|
+
return ThrowReferenceError(String::cast(args[0]));
|
898
934
|
}
|
899
935
|
|
900
936
|
|
@@ -920,6 +956,13 @@ Object* StoreInterceptorProperty(Arguments args) {
|
|
920
956
|
}
|
921
957
|
|
922
958
|
|
959
|
+
Object* KeyedLoadPropertyWithInterceptor(Arguments args) {
|
960
|
+
JSObject* receiver = JSObject::cast(args[0]);
|
961
|
+
uint32_t index = Smi::cast(args[1])->value();
|
962
|
+
return receiver->GetElementWithInterceptor(receiver, index);
|
963
|
+
}
|
964
|
+
|
965
|
+
|
923
966
|
Object* StubCompiler::CompileCallInitialize(Code::Flags flags) {
|
924
967
|
HandleScope scope;
|
925
968
|
int argc = Code::ExtractArgumentsCountFromFlags(flags);
|
@@ -929,8 +972,8 @@ Object* StubCompiler::CompileCallInitialize(Code::Flags flags) {
|
|
929
972
|
Counters::call_initialize_stubs.Increment();
|
930
973
|
Code* code = Code::cast(result);
|
931
974
|
USE(code);
|
932
|
-
|
933
|
-
|
975
|
+
PROFILE(CodeCreateEvent(Logger::CALL_INITIALIZE_TAG,
|
976
|
+
code, code->arguments_count()));
|
934
977
|
}
|
935
978
|
return result;
|
936
979
|
}
|
@@ -947,8 +990,8 @@ Object* StubCompiler::CompileCallPreMonomorphic(Code::Flags flags) {
|
|
947
990
|
Counters::call_premonomorphic_stubs.Increment();
|
948
991
|
Code* code = Code::cast(result);
|
949
992
|
USE(code);
|
950
|
-
|
951
|
-
|
993
|
+
PROFILE(CodeCreateEvent(Logger::CALL_PRE_MONOMORPHIC_TAG,
|
994
|
+
code, code->arguments_count()));
|
952
995
|
}
|
953
996
|
return result;
|
954
997
|
}
|
@@ -963,8 +1006,8 @@ Object* StubCompiler::CompileCallNormal(Code::Flags flags) {
|
|
963
1006
|
Counters::call_normal_stubs.Increment();
|
964
1007
|
Code* code = Code::cast(result);
|
965
1008
|
USE(code);
|
966
|
-
|
967
|
-
|
1009
|
+
PROFILE(CodeCreateEvent(Logger::CALL_NORMAL_TAG,
|
1010
|
+
code, code->arguments_count()));
|
968
1011
|
}
|
969
1012
|
return result;
|
970
1013
|
}
|
@@ -979,8 +1022,8 @@ Object* StubCompiler::CompileCallMegamorphic(Code::Flags flags) {
|
|
979
1022
|
Counters::call_megamorphic_stubs.Increment();
|
980
1023
|
Code* code = Code::cast(result);
|
981
1024
|
USE(code);
|
982
|
-
|
983
|
-
|
1025
|
+
PROFILE(CodeCreateEvent(Logger::CALL_MEGAMORPHIC_TAG,
|
1026
|
+
code, code->arguments_count()));
|
984
1027
|
}
|
985
1028
|
return result;
|
986
1029
|
}
|
@@ -995,7 +1038,8 @@ Object* StubCompiler::CompileCallMiss(Code::Flags flags) {
|
|
995
1038
|
Counters::call_megamorphic_stubs.Increment();
|
996
1039
|
Code* code = Code::cast(result);
|
997
1040
|
USE(code);
|
998
|
-
|
1041
|
+
PROFILE(CodeCreateEvent(Logger::CALL_MISS_TAG,
|
1042
|
+
code, code->arguments_count()));
|
999
1043
|
}
|
1000
1044
|
return result;
|
1001
1045
|
}
|
@@ -1009,8 +1053,8 @@ Object* StubCompiler::CompileCallDebugBreak(Code::Flags flags) {
|
|
1009
1053
|
if (!result->IsFailure()) {
|
1010
1054
|
Code* code = Code::cast(result);
|
1011
1055
|
USE(code);
|
1012
|
-
|
1013
|
-
|
1056
|
+
PROFILE(CodeCreateEvent(Logger::CALL_DEBUG_BREAK_TAG,
|
1057
|
+
code, code->arguments_count()));
|
1014
1058
|
}
|
1015
1059
|
return result;
|
1016
1060
|
}
|
@@ -1026,8 +1070,8 @@ Object* StubCompiler::CompileCallDebugPrepareStepIn(Code::Flags flags) {
|
|
1026
1070
|
if (!result->IsFailure()) {
|
1027
1071
|
Code* code = Code::cast(result);
|
1028
1072
|
USE(code);
|
1029
|
-
|
1030
|
-
|
1073
|
+
PROFILE(CodeCreateEvent(Logger::CALL_DEBUG_PREPARE_STEP_IN_TAG,
|
1074
|
+
code, code->arguments_count()));
|
1031
1075
|
}
|
1032
1076
|
return result;
|
1033
1077
|
}
|
@@ -1059,6 +1103,21 @@ Object* StubCompiler::GetCodeWithFlags(Code::Flags flags, String* name) {
|
|
1059
1103
|
}
|
1060
1104
|
|
1061
1105
|
|
1106
|
+
void StubCompiler::LookupPostInterceptor(JSObject* holder,
|
1107
|
+
String* name,
|
1108
|
+
LookupResult* lookup) {
|
1109
|
+
holder->LocalLookupRealNamedProperty(name, lookup);
|
1110
|
+
if (!lookup->IsProperty()) {
|
1111
|
+
lookup->NotFound();
|
1112
|
+
Object* proto = holder->GetPrototype();
|
1113
|
+
if (proto != Heap::null_value()) {
|
1114
|
+
proto->Lookup(name, lookup);
|
1115
|
+
}
|
1116
|
+
}
|
1117
|
+
}
|
1118
|
+
|
1119
|
+
|
1120
|
+
|
1062
1121
|
Object* LoadStubCompiler::GetCode(PropertyType type, String* name) {
|
1063
1122
|
Code::Flags flags = Code::ComputeMonomorphicFlags(Code::LOAD_IC, type);
|
1064
1123
|
return GetCodeWithFlags(flags, name);
|
@@ -1099,10 +1158,77 @@ Object* ConstructStubCompiler::GetCode() {
|
|
1099
1158
|
if (!result->IsFailure()) {
|
1100
1159
|
Code* code = Code::cast(result);
|
1101
1160
|
USE(code);
|
1102
|
-
|
1161
|
+
PROFILE(CodeCreateEvent(Logger::STUB_TAG, code, "ConstructStub"));
|
1103
1162
|
}
|
1104
1163
|
return result;
|
1105
1164
|
}
|
1106
1165
|
|
1107
1166
|
|
1167
|
+
CallOptimization::CallOptimization(LookupResult* lookup) {
|
1168
|
+
if (!lookup->IsProperty() || !lookup->IsCacheable() ||
|
1169
|
+
lookup->type() != CONSTANT_FUNCTION) {
|
1170
|
+
Initialize(NULL);
|
1171
|
+
} else {
|
1172
|
+
// We only optimize constant function calls.
|
1173
|
+
Initialize(lookup->GetConstantFunction());
|
1174
|
+
}
|
1175
|
+
}
|
1176
|
+
|
1177
|
+
CallOptimization::CallOptimization(JSFunction* function) {
|
1178
|
+
Initialize(function);
|
1179
|
+
}
|
1180
|
+
|
1181
|
+
|
1182
|
+
int CallOptimization::GetPrototypeDepthOfExpectedType(JSObject* object,
|
1183
|
+
JSObject* holder) const {
|
1184
|
+
ASSERT(is_simple_api_call_);
|
1185
|
+
if (expected_receiver_type_ == NULL) return 0;
|
1186
|
+
int depth = 0;
|
1187
|
+
while (object != holder) {
|
1188
|
+
if (object->IsInstanceOf(expected_receiver_type_)) return depth;
|
1189
|
+
object = JSObject::cast(object->GetPrototype());
|
1190
|
+
++depth;
|
1191
|
+
}
|
1192
|
+
if (holder->IsInstanceOf(expected_receiver_type_)) return depth;
|
1193
|
+
return kInvalidProtoDepth;
|
1194
|
+
}
|
1195
|
+
|
1196
|
+
|
1197
|
+
void CallOptimization::Initialize(JSFunction* function) {
|
1198
|
+
constant_function_ = NULL;
|
1199
|
+
is_simple_api_call_ = false;
|
1200
|
+
expected_receiver_type_ = NULL;
|
1201
|
+
api_call_info_ = NULL;
|
1202
|
+
|
1203
|
+
if (function == NULL || !function->is_compiled()) return;
|
1204
|
+
|
1205
|
+
constant_function_ = function;
|
1206
|
+
AnalyzePossibleApiFunction(function);
|
1207
|
+
}
|
1208
|
+
|
1209
|
+
|
1210
|
+
void CallOptimization::AnalyzePossibleApiFunction(JSFunction* function) {
|
1211
|
+
SharedFunctionInfo* sfi = function->shared();
|
1212
|
+
if (!sfi->IsApiFunction()) return;
|
1213
|
+
FunctionTemplateInfo* info = sfi->get_api_func_data();
|
1214
|
+
|
1215
|
+
// Require a C++ callback.
|
1216
|
+
if (info->call_code()->IsUndefined()) return;
|
1217
|
+
api_call_info_ = CallHandlerInfo::cast(info->call_code());
|
1218
|
+
|
1219
|
+
// Accept signatures that either have no restrictions at all or
|
1220
|
+
// only have restrictions on the receiver.
|
1221
|
+
if (!info->signature()->IsUndefined()) {
|
1222
|
+
SignatureInfo* signature = SignatureInfo::cast(info->signature());
|
1223
|
+
if (!signature->args()->IsUndefined()) return;
|
1224
|
+
if (!signature->receiver()->IsUndefined()) {
|
1225
|
+
expected_receiver_type_ =
|
1226
|
+
FunctionTemplateInfo::cast(signature->receiver());
|
1227
|
+
}
|
1228
|
+
}
|
1229
|
+
|
1230
|
+
is_simple_api_call_ = true;
|
1231
|
+
}
|
1232
|
+
|
1233
|
+
|
1108
1234
|
} } // namespace v8::internal
|