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:
|
@@ -30,29 +30,13 @@
|
|
30
30
|
#include "codegen-inl.h"
|
31
31
|
#include "register-allocator-inl.h"
|
32
32
|
#include "scopes.h"
|
33
|
+
#include "virtual-frame-inl.h"
|
33
34
|
|
34
35
|
namespace v8 {
|
35
36
|
namespace internal {
|
36
37
|
|
37
38
|
#define __ ACCESS_MASM(masm())
|
38
39
|
|
39
|
-
// -------------------------------------------------------------------------
|
40
|
-
// VirtualFrame implementation.
|
41
|
-
|
42
|
-
// On entry to a function, the virtual frame already contains the receiver,
|
43
|
-
// the parameters, and a return address. All frame elements are in memory.
|
44
|
-
VirtualFrame::VirtualFrame()
|
45
|
-
: elements_(parameter_count() + local_count() + kPreallocatedElements),
|
46
|
-
stack_pointer_(parameter_count() + 1) { // 0-based index of TOS.
|
47
|
-
for (int i = 0; i <= stack_pointer_; i++) {
|
48
|
-
elements_.Add(FrameElement::MemoryElement());
|
49
|
-
}
|
50
|
-
for (int i = 0; i < RegisterAllocator::kNumRegisters; i++) {
|
51
|
-
register_locations_[i] = kIllegalIndex;
|
52
|
-
}
|
53
|
-
}
|
54
|
-
|
55
|
-
|
56
40
|
void VirtualFrame::Enter() {
|
57
41
|
// Registers live on entry to a JS frame:
|
58
42
|
// rsp: stack pointer, points to return address from this function.
|
@@ -193,25 +177,25 @@ void VirtualFrame::EmitPop(const Operand& operand) {
|
|
193
177
|
}
|
194
178
|
|
195
179
|
|
196
|
-
void VirtualFrame::EmitPush(Register reg) {
|
180
|
+
void VirtualFrame::EmitPush(Register reg, TypeInfo info) {
|
197
181
|
ASSERT(stack_pointer_ == element_count() - 1);
|
198
|
-
elements_.Add(FrameElement::MemoryElement());
|
182
|
+
elements_.Add(FrameElement::MemoryElement(info));
|
199
183
|
stack_pointer_++;
|
200
184
|
__ push(reg);
|
201
185
|
}
|
202
186
|
|
203
187
|
|
204
|
-
void VirtualFrame::EmitPush(const Operand& operand) {
|
188
|
+
void VirtualFrame::EmitPush(const Operand& operand, TypeInfo info) {
|
205
189
|
ASSERT(stack_pointer_ == element_count() - 1);
|
206
|
-
elements_.Add(FrameElement::MemoryElement());
|
190
|
+
elements_.Add(FrameElement::MemoryElement(info));
|
207
191
|
stack_pointer_++;
|
208
192
|
__ push(operand);
|
209
193
|
}
|
210
194
|
|
211
195
|
|
212
|
-
void VirtualFrame::EmitPush(Immediate immediate) {
|
196
|
+
void VirtualFrame::EmitPush(Immediate immediate, TypeInfo info) {
|
213
197
|
ASSERT(stack_pointer_ == element_count() - 1);
|
214
|
-
elements_.Add(FrameElement::MemoryElement());
|
198
|
+
elements_.Add(FrameElement::MemoryElement(info));
|
215
199
|
stack_pointer_++;
|
216
200
|
__ push(immediate);
|
217
201
|
}
|
@@ -219,7 +203,7 @@ void VirtualFrame::EmitPush(Immediate immediate) {
|
|
219
203
|
|
220
204
|
void VirtualFrame::EmitPush(Smi* smi_value) {
|
221
205
|
ASSERT(stack_pointer_ == element_count() - 1);
|
222
|
-
elements_.Add(FrameElement::MemoryElement());
|
206
|
+
elements_.Add(FrameElement::MemoryElement(TypeInfo::Smi()));
|
223
207
|
stack_pointer_++;
|
224
208
|
__ Push(smi_value);
|
225
209
|
}
|
@@ -227,20 +211,46 @@ void VirtualFrame::EmitPush(Smi* smi_value) {
|
|
227
211
|
|
228
212
|
void VirtualFrame::EmitPush(Handle<Object> value) {
|
229
213
|
ASSERT(stack_pointer_ == element_count() - 1);
|
230
|
-
|
214
|
+
TypeInfo info = TypeInfo::TypeFromValue(value);
|
215
|
+
elements_.Add(FrameElement::MemoryElement(info));
|
231
216
|
stack_pointer_++;
|
232
217
|
__ Push(value);
|
233
218
|
}
|
234
219
|
|
235
220
|
|
236
|
-
void VirtualFrame::EmitPush(Heap::RootListIndex index) {
|
221
|
+
void VirtualFrame::EmitPush(Heap::RootListIndex index, TypeInfo info) {
|
237
222
|
ASSERT(stack_pointer_ == element_count() - 1);
|
238
|
-
elements_.Add(FrameElement::MemoryElement());
|
223
|
+
elements_.Add(FrameElement::MemoryElement(info));
|
239
224
|
stack_pointer_++;
|
240
225
|
__ PushRoot(index);
|
241
226
|
}
|
242
227
|
|
243
228
|
|
229
|
+
void VirtualFrame::Push(Expression* expr) {
|
230
|
+
ASSERT(expr->IsTrivial());
|
231
|
+
|
232
|
+
Literal* lit = expr->AsLiteral();
|
233
|
+
if (lit != NULL) {
|
234
|
+
Push(lit->handle());
|
235
|
+
return;
|
236
|
+
}
|
237
|
+
|
238
|
+
VariableProxy* proxy = expr->AsVariableProxy();
|
239
|
+
if (proxy != NULL) {
|
240
|
+
Slot* slot = proxy->var()->slot();
|
241
|
+
if (slot->type() == Slot::LOCAL) {
|
242
|
+
PushLocalAt(slot->index());
|
243
|
+
return;
|
244
|
+
}
|
245
|
+
if (slot->type() == Slot::PARAMETER) {
|
246
|
+
PushParameterAt(slot->index());
|
247
|
+
return;
|
248
|
+
}
|
249
|
+
}
|
250
|
+
UNREACHABLE();
|
251
|
+
}
|
252
|
+
|
253
|
+
|
244
254
|
void VirtualFrame::Drop(int count) {
|
245
255
|
ASSERT(count >= 0);
|
246
256
|
ASSERT(height() >= count);
|
@@ -305,10 +315,14 @@ int VirtualFrame::InvalidateFrameSlotAt(int index) {
|
|
305
315
|
// Set the new backing element.
|
306
316
|
if (elements_[new_backing_index].is_synced()) {
|
307
317
|
elements_[new_backing_index] =
|
308
|
-
FrameElement::RegisterElement(backing_reg,
|
318
|
+
FrameElement::RegisterElement(backing_reg,
|
319
|
+
FrameElement::SYNCED,
|
320
|
+
original.type_info());
|
309
321
|
} else {
|
310
322
|
elements_[new_backing_index] =
|
311
|
-
FrameElement::RegisterElement(backing_reg,
|
323
|
+
FrameElement::RegisterElement(backing_reg,
|
324
|
+
FrameElement::NOT_SYNCED,
|
325
|
+
original.type_info());
|
312
326
|
}
|
313
327
|
// Update the other copies.
|
314
328
|
for (int i = new_backing_index + 1; i < element_count(); i++) {
|
@@ -339,7 +353,8 @@ void VirtualFrame::TakeFrameSlotAt(int index) {
|
|
339
353
|
ASSERT(fresh.is_valid());
|
340
354
|
FrameElement new_element =
|
341
355
|
FrameElement::RegisterElement(fresh.reg(),
|
342
|
-
FrameElement::NOT_SYNCED
|
356
|
+
FrameElement::NOT_SYNCED,
|
357
|
+
original.type_info());
|
343
358
|
Use(fresh.reg(), element_count());
|
344
359
|
elements_.Add(new_element);
|
345
360
|
__ movq(fresh.reg(), Operand(rbp, fp_relative(index)));
|
@@ -480,10 +495,12 @@ void VirtualFrame::MakeMergable() {
|
|
480
495
|
for (int i = 0; i < element_count(); i++) {
|
481
496
|
FrameElement element = elements_[i];
|
482
497
|
|
498
|
+
// In all cases we have to reset the number type information
|
499
|
+
// to unknown for a mergable frame because of incoming back edges.
|
483
500
|
if (element.is_constant() || element.is_copy()) {
|
484
501
|
if (element.is_synced()) {
|
485
502
|
// Just spill.
|
486
|
-
elements_[i] = FrameElement::MemoryElement();
|
503
|
+
elements_[i] = FrameElement::MemoryElement(TypeInfo::Unknown());
|
487
504
|
} else {
|
488
505
|
// Allocate to a register.
|
489
506
|
FrameElement backing_element; // Invalid if not a copy.
|
@@ -494,7 +511,8 @@ void VirtualFrame::MakeMergable() {
|
|
494
511
|
ASSERT(fresh.is_valid()); // A register was spilled if all were in use.
|
495
512
|
elements_[i] =
|
496
513
|
FrameElement::RegisterElement(fresh.reg(),
|
497
|
-
FrameElement::NOT_SYNCED
|
514
|
+
FrameElement::NOT_SYNCED,
|
515
|
+
TypeInfo::Unknown());
|
498
516
|
Use(fresh.reg(), i);
|
499
517
|
|
500
518
|
// Emit a move.
|
@@ -523,6 +541,7 @@ void VirtualFrame::MakeMergable() {
|
|
523
541
|
// The copy flag is not relied on before the end of this loop,
|
524
542
|
// including when registers are spilled.
|
525
543
|
elements_[i].clear_copied();
|
544
|
+
elements_[i].set_type_info(TypeInfo::Unknown());
|
526
545
|
}
|
527
546
|
}
|
528
547
|
}
|
@@ -728,6 +747,14 @@ Result VirtualFrame::Pop() {
|
|
728
747
|
int index = element_count();
|
729
748
|
ASSERT(element.is_valid());
|
730
749
|
|
750
|
+
// Get number type information of the result.
|
751
|
+
TypeInfo info;
|
752
|
+
if (!element.is_copy()) {
|
753
|
+
info = element.type_info();
|
754
|
+
} else {
|
755
|
+
info = elements_[element.index()].type_info();
|
756
|
+
}
|
757
|
+
|
731
758
|
bool pop_needed = (stack_pointer_ == index);
|
732
759
|
if (pop_needed) {
|
733
760
|
stack_pointer_--;
|
@@ -735,6 +762,7 @@ Result VirtualFrame::Pop() {
|
|
735
762
|
Result temp = cgen()->allocator()->Allocate();
|
736
763
|
ASSERT(temp.is_valid());
|
737
764
|
__ pop(temp.reg());
|
765
|
+
temp.set_type_info(info);
|
738
766
|
return temp;
|
739
767
|
}
|
740
768
|
|
@@ -762,14 +790,16 @@ Result VirtualFrame::Pop() {
|
|
762
790
|
ASSERT(temp.is_valid());
|
763
791
|
Use(temp.reg(), index);
|
764
792
|
FrameElement new_element =
|
765
|
-
FrameElement::RegisterElement(temp.reg(),
|
793
|
+
FrameElement::RegisterElement(temp.reg(),
|
794
|
+
FrameElement::SYNCED,
|
795
|
+
element.type_info());
|
766
796
|
// Preserve the copy flag on the element.
|
767
797
|
if (element.is_copied()) new_element.set_copied();
|
768
798
|
elements_[index] = new_element;
|
769
799
|
__ movq(temp.reg(), Operand(rbp, fp_relative(index)));
|
770
|
-
return Result(temp.reg());
|
800
|
+
return Result(temp.reg(), info);
|
771
801
|
} else if (element.is_register()) {
|
772
|
-
return Result(element.reg());
|
802
|
+
return Result(element.reg(), info);
|
773
803
|
} else {
|
774
804
|
ASSERT(element.is_constant());
|
775
805
|
return Result(element.handle());
|
@@ -819,6 +849,25 @@ Result VirtualFrame::CallStub(CodeStub* stub, Result* arg0, Result* arg1) {
|
|
819
849
|
}
|
820
850
|
|
821
851
|
|
852
|
+
Result VirtualFrame::CallJSFunction(int arg_count) {
|
853
|
+
Result function = Pop();
|
854
|
+
|
855
|
+
// InvokeFunction requires function in rdi. Move it in there.
|
856
|
+
function.ToRegister(rdi);
|
857
|
+
function.Unuse();
|
858
|
+
|
859
|
+
// +1 for receiver.
|
860
|
+
PrepareForCall(arg_count + 1, arg_count + 1);
|
861
|
+
ASSERT(cgen()->HasValidEntryRegisters());
|
862
|
+
ParameterCount count(arg_count);
|
863
|
+
__ InvokeFunction(rdi, count, CALL_FUNCTION);
|
864
|
+
RestoreContextRegister();
|
865
|
+
Result result = cgen()->allocator()->Allocate(rax);
|
866
|
+
ASSERT(result.is_valid());
|
867
|
+
return result;
|
868
|
+
}
|
869
|
+
|
870
|
+
|
822
871
|
void VirtualFrame::SyncElementBelowStackPointer(int index) {
|
823
872
|
// Emit code to write elements below the stack pointer to their
|
824
873
|
// (already allocated) stack address.
|
@@ -969,6 +1018,17 @@ Result VirtualFrame::CallRuntime(Runtime::FunctionId id, int arg_count) {
|
|
969
1018
|
}
|
970
1019
|
|
971
1020
|
|
1021
|
+
#ifdef ENABLE_DEBUGGER_SUPPORT
|
1022
|
+
void VirtualFrame::DebugBreak() {
|
1023
|
+
PrepareForCall(0, 0);
|
1024
|
+
ASSERT(cgen()->HasValidEntryRegisters());
|
1025
|
+
__ DebugBreak();
|
1026
|
+
Result result = cgen()->allocator()->Allocate(rax);
|
1027
|
+
ASSERT(result.is_valid());
|
1028
|
+
}
|
1029
|
+
#endif
|
1030
|
+
|
1031
|
+
|
972
1032
|
Result VirtualFrame::CallLoadIC(RelocInfo::Mode mode) {
|
973
1033
|
// Name and receiver are on the top of the frame. The IC expects
|
974
1034
|
// name in rcx and receiver on the stack. It does not drop the
|
@@ -996,7 +1056,6 @@ Result VirtualFrame::CallKeyedStoreIC() {
|
|
996
1056
|
// expects value in rax and key and receiver on the stack. It does
|
997
1057
|
// not drop the key and receiver.
|
998
1058
|
Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Initialize));
|
999
|
-
// TODO(1222589): Make the IC grab the values from the stack.
|
1000
1059
|
Result value = Pop();
|
1001
1060
|
PrepareForCall(2, 0); // Two stack args, neither callee-dropped.
|
1002
1061
|
value.ToRegister(rax);
|
@@ -1008,14 +1067,17 @@ Result VirtualFrame::CallKeyedStoreIC() {
|
|
1008
1067
|
Result VirtualFrame::CallCallIC(RelocInfo::Mode mode,
|
1009
1068
|
int arg_count,
|
1010
1069
|
int loop_nesting) {
|
1011
|
-
//
|
1012
|
-
// The IC expects
|
1013
|
-
//
|
1070
|
+
// Function name, arguments, and receiver are found on top of the frame
|
1071
|
+
// and dropped by the call. The IC expects the name in rcx and the rest
|
1072
|
+
// on the stack, and drops them all.
|
1014
1073
|
InLoopFlag in_loop = loop_nesting > 0 ? IN_LOOP : NOT_IN_LOOP;
|
1015
1074
|
Handle<Code> ic = cgen()->ComputeCallInitialize(arg_count, in_loop);
|
1075
|
+
Result name = Pop();
|
1016
1076
|
// Spill args, receiver, and function. The call will drop args and
|
1017
1077
|
// receiver.
|
1018
|
-
PrepareForCall(arg_count +
|
1078
|
+
PrepareForCall(arg_count + 1, arg_count + 1);
|
1079
|
+
name.ToRegister(rcx);
|
1080
|
+
name.Unuse();
|
1019
1081
|
return RawCallCodeObject(ic, mode);
|
1020
1082
|
}
|
1021
1083
|
|
@@ -1046,31 +1108,45 @@ Result VirtualFrame::CallConstructor(int arg_count) {
|
|
1046
1108
|
|
1047
1109
|
Result VirtualFrame::CallStoreIC() {
|
1048
1110
|
// Name, value, and receiver are on top of the frame. The IC
|
1049
|
-
// expects name in rcx, value in rax, and receiver
|
1050
|
-
// does not drop the receiver.
|
1111
|
+
// expects name in rcx, value in rax, and receiver in edx.
|
1051
1112
|
Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Initialize));
|
1052
1113
|
Result name = Pop();
|
1053
1114
|
Result value = Pop();
|
1054
|
-
|
1115
|
+
Result receiver = Pop();
|
1116
|
+
PrepareForCall(0, 0);
|
1055
1117
|
|
1056
|
-
|
1057
|
-
|
1118
|
+
// Optimized for case in which name is a constant value.
|
1119
|
+
if (name.is_register() && (name.reg().is(rdx) || name.reg().is(rax))) {
|
1120
|
+
if (!is_used(rcx)) {
|
1121
|
+
name.ToRegister(rcx);
|
1122
|
+
} else if (!is_used(rbx)) {
|
1123
|
+
name.ToRegister(rbx);
|
1124
|
+
} else {
|
1125
|
+
ASSERT(!is_used(rdi)); // Only three results are live, so rdi is free.
|
1126
|
+
name.ToRegister(rdi);
|
1127
|
+
}
|
1128
|
+
}
|
1129
|
+
// Now name is not in edx or eax, so we can fix them, then move name to ecx.
|
1130
|
+
if (value.is_register() && value.reg().is(rdx)) {
|
1131
|
+
if (receiver.is_register() && receiver.reg().is(rax)) {
|
1058
1132
|
// Wrong registers.
|
1059
|
-
__ xchg(rax,
|
1133
|
+
__ xchg(rax, rdx);
|
1060
1134
|
} else {
|
1061
|
-
// Register rax is free for value, which frees rcx for
|
1135
|
+
// Register rax is free for value, which frees rcx for receiver.
|
1062
1136
|
value.ToRegister(rax);
|
1063
|
-
|
1137
|
+
receiver.ToRegister(rdx);
|
1064
1138
|
}
|
1065
1139
|
} else {
|
1066
|
-
// Register rcx is free for
|
1140
|
+
// Register rcx is free for receiver, which guarantees rax is free for
|
1067
1141
|
// value.
|
1068
|
-
|
1142
|
+
receiver.ToRegister(rdx);
|
1069
1143
|
value.ToRegister(rax);
|
1070
1144
|
}
|
1071
|
-
|
1145
|
+
// Receiver and value are in the right place, so rcx is free for name.
|
1146
|
+
name.ToRegister(rcx);
|
1072
1147
|
name.Unuse();
|
1073
1148
|
value.Unuse();
|
1149
|
+
receiver.Unuse();
|
1074
1150
|
return RawCallCodeObject(ic, RelocInfo::CODE_TARGET);
|
1075
1151
|
}
|
1076
1152
|
|
@@ -28,6 +28,7 @@
|
|
28
28
|
#ifndef V8_X64_VIRTUAL_FRAME_X64_H_
|
29
29
|
#define V8_X64_VIRTUAL_FRAME_X64_H_
|
30
30
|
|
31
|
+
#include "type-info.h"
|
31
32
|
#include "register-allocator.h"
|
32
33
|
#include "scopes.h"
|
33
34
|
|
@@ -72,16 +73,17 @@ class VirtualFrame : public ZoneObject {
|
|
72
73
|
static const int kIllegalIndex = -1;
|
73
74
|
|
74
75
|
// Construct an initial virtual frame on entry to a JS function.
|
75
|
-
VirtualFrame();
|
76
|
+
inline VirtualFrame();
|
76
77
|
|
77
78
|
// Construct a virtual frame as a clone of an existing one.
|
78
|
-
explicit VirtualFrame(VirtualFrame* original);
|
79
|
+
explicit inline VirtualFrame(VirtualFrame* original);
|
79
80
|
|
80
81
|
CodeGenerator* cgen() { return CodeGeneratorScope::Current(); }
|
81
82
|
MacroAssembler* masm() { return cgen()->masm(); }
|
82
83
|
|
83
84
|
// Create a duplicate of an existing valid frame element.
|
84
|
-
FrameElement CopyElementAt(int index
|
85
|
+
FrameElement CopyElementAt(int index,
|
86
|
+
TypeInfo info = TypeInfo::Uninitialized());
|
85
87
|
|
86
88
|
// The number of elements on the virtual frame.
|
87
89
|
int element_count() { return elements_.length(); }
|
@@ -137,7 +139,7 @@ class VirtualFrame : public ZoneObject {
|
|
137
139
|
void ForgetElements(int count);
|
138
140
|
|
139
141
|
// Spill all values from the frame to memory.
|
140
|
-
void SpillAll();
|
142
|
+
inline void SpillAll();
|
141
143
|
|
142
144
|
// Spill all occurrences of a specific register from the frame.
|
143
145
|
void Spill(Register reg) {
|
@@ -198,7 +200,7 @@ class VirtualFrame : public ZoneObject {
|
|
198
200
|
// Prepare for returning from the frame by spilling locals. This
|
199
201
|
// avoids generating unnecessary merge code when jumping to the
|
200
202
|
// shared return site. Emits code for spills.
|
201
|
-
void PrepareForReturn();
|
203
|
+
inline void PrepareForReturn();
|
202
204
|
|
203
205
|
// Number of local variables after when we use a loop for allocating.
|
204
206
|
static const int kLocalVarBound = 7;
|
@@ -316,11 +318,19 @@ class VirtualFrame : public ZoneObject {
|
|
316
318
|
// arguments are consumed by the call.
|
317
319
|
Result CallStub(CodeStub* stub, Result* arg0, Result* arg1);
|
318
320
|
|
321
|
+
// Call JS function from top of the stack with arguments
|
322
|
+
// taken from the stack.
|
323
|
+
Result CallJSFunction(int arg_count);
|
324
|
+
|
319
325
|
// Call runtime given the number of arguments expected on (and
|
320
326
|
// removed from) the stack.
|
321
327
|
Result CallRuntime(Runtime::Function* f, int arg_count);
|
322
328
|
Result CallRuntime(Runtime::FunctionId id, int arg_count);
|
323
329
|
|
330
|
+
#ifdef ENABLE_DEBUGGER_SUPPORT
|
331
|
+
void DebugBreak();
|
332
|
+
#endif
|
333
|
+
|
324
334
|
// Invoke builtin given the number of arguments it expects on (and
|
325
335
|
// removes from) the stack.
|
326
336
|
Result InvokeBuiltin(Builtins::JavaScript id,
|
@@ -343,9 +353,9 @@ class VirtualFrame : public ZoneObject {
|
|
343
353
|
// of the frame. Key and receiver are not dropped.
|
344
354
|
Result CallKeyedStoreIC();
|
345
355
|
|
346
|
-
// Call call IC.
|
347
|
-
//
|
348
|
-
// argument count does not include the receiver.
|
356
|
+
// Call call IC. Function name, arguments, and receiver are found on top
|
357
|
+
// of the frame and dropped by the call.
|
358
|
+
// The argument count does not include the receiver.
|
349
359
|
Result CallCallIC(RelocInfo::Mode mode, int arg_count, int loop_nesting);
|
350
360
|
|
351
361
|
// Allocate and call JS function as constructor. Arguments,
|
@@ -376,24 +386,28 @@ class VirtualFrame : public ZoneObject {
|
|
376
386
|
|
377
387
|
// Push an element on top of the expression stack and emit a
|
378
388
|
// corresponding push instruction.
|
379
|
-
void EmitPush(Register reg
|
380
|
-
|
381
|
-
void EmitPush(
|
382
|
-
|
389
|
+
void EmitPush(Register reg,
|
390
|
+
TypeInfo info = TypeInfo::Unknown());
|
391
|
+
void EmitPush(const Operand& operand,
|
392
|
+
TypeInfo info = TypeInfo::Unknown());
|
393
|
+
void EmitPush(Heap::RootListIndex index,
|
394
|
+
TypeInfo info = TypeInfo::Unknown());
|
395
|
+
void EmitPush(Immediate immediate,
|
396
|
+
TypeInfo info = TypeInfo::Unknown());
|
383
397
|
void EmitPush(Smi* value);
|
384
398
|
// Uses kScratchRegister, emits appropriate relocation info.
|
385
399
|
void EmitPush(Handle<Object> value);
|
386
400
|
|
387
401
|
// Push an element on the virtual frame.
|
388
|
-
void Push(Register reg);
|
389
|
-
void Push(Handle<Object> value);
|
390
|
-
void Push(Smi* value)
|
402
|
+
inline void Push(Register reg, TypeInfo info = TypeInfo::Unknown());
|
403
|
+
inline void Push(Handle<Object> value);
|
404
|
+
inline void Push(Smi* value);
|
391
405
|
|
392
406
|
// Pushing a result invalidates it (its contents become owned by the
|
393
407
|
// frame).
|
394
408
|
void Push(Result* result) {
|
395
409
|
if (result->is_register()) {
|
396
|
-
Push(result->reg());
|
410
|
+
Push(result->reg(), result->type_info());
|
397
411
|
} else {
|
398
412
|
ASSERT(result->is_constant());
|
399
413
|
Push(result->handle());
|
@@ -401,10 +415,17 @@ class VirtualFrame : public ZoneObject {
|
|
401
415
|
result->Unuse();
|
402
416
|
}
|
403
417
|
|
418
|
+
// Pushing an expression expects that the expression is trivial (according
|
419
|
+
// to Expression::IsTrivial).
|
420
|
+
void Push(Expression* expr);
|
421
|
+
|
404
422
|
// Nip removes zero or more elements from immediately below the top
|
405
423
|
// of the frame, leaving the previous top-of-frame value on top of
|
406
424
|
// the frame. Nip(k) is equivalent to x = Pop(), Drop(k), Push(x).
|
407
|
-
void Nip(int num_dropped);
|
425
|
+
inline void Nip(int num_dropped);
|
426
|
+
|
427
|
+
inline void SetTypeForLocalAt(int index, TypeInfo info);
|
428
|
+
inline void SetTypeForParamAt(int index, TypeInfo info);
|
408
429
|
|
409
430
|
private:
|
410
431
|
static const int kLocal0Offset = JavaScriptFrameConstants::kLocal0Offset;
|
@@ -496,7 +517,7 @@ class VirtualFrame : public ZoneObject {
|
|
496
517
|
|
497
518
|
// Push a copy of a frame slot (typically a local or parameter) on top of
|
498
519
|
// the frame.
|
499
|
-
void PushFrameSlotAt(int index);
|
520
|
+
inline void PushFrameSlotAt(int index);
|
500
521
|
|
501
522
|
// Push a the value of a frame slot (typically a local or parameter) on
|
502
523
|
// top of the frame and invalidate the slot.
|
@@ -547,7 +568,7 @@ class VirtualFrame : public ZoneObject {
|
|
547
568
|
// (via PrepareForCall).
|
548
569
|
Result RawCallCodeObject(Handle<Code> code, RelocInfo::Mode rmode);
|
549
570
|
|
550
|
-
bool Equals(VirtualFrame* other);
|
571
|
+
inline bool Equals(VirtualFrame* other);
|
551
572
|
|
552
573
|
// Classes that need raw access to the elements_ array.
|
553
574
|
friend class DeferredCode;
|