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
@@ -331,6 +331,17 @@ void ThreadManager::Iterate(ObjectVisitor* v) {
|
|
331
331
|
}
|
332
332
|
|
333
333
|
|
334
|
+
void ThreadManager::IterateThreads(ThreadVisitor* v) {
|
335
|
+
for (ThreadState* state = ThreadState::FirstInUse();
|
336
|
+
state != NULL;
|
337
|
+
state = state->Next()) {
|
338
|
+
char* data = state->data();
|
339
|
+
data += HandleScopeImplementer::ArchiveSpacePerThread();
|
340
|
+
Top::IterateThread(v, data);
|
341
|
+
}
|
342
|
+
}
|
343
|
+
|
344
|
+
|
334
345
|
void ThreadManager::MarkCompactPrologue(bool is_compacting) {
|
335
346
|
for (ThreadState* state = ThreadState::FirstInUse();
|
336
347
|
state != NULL;
|
@@ -79,6 +79,20 @@ class ThreadState {
|
|
79
79
|
};
|
80
80
|
|
81
81
|
|
82
|
+
// Defined in top.h
|
83
|
+
class ThreadLocalTop;
|
84
|
+
|
85
|
+
|
86
|
+
class ThreadVisitor {
|
87
|
+
public:
|
88
|
+
// ThreadLocalTop may be only available during this call.
|
89
|
+
virtual void VisitThread(ThreadLocalTop* top) = 0;
|
90
|
+
|
91
|
+
protected:
|
92
|
+
virtual ~ThreadVisitor() {}
|
93
|
+
};
|
94
|
+
|
95
|
+
|
82
96
|
class ThreadManager : public AllStatic {
|
83
97
|
public:
|
84
98
|
static void Lock();
|
@@ -90,6 +104,7 @@ class ThreadManager : public AllStatic {
|
|
90
104
|
static bool IsArchived();
|
91
105
|
|
92
106
|
static void Iterate(ObjectVisitor* v);
|
107
|
+
static void IterateThreads(ThreadVisitor* v);
|
93
108
|
static void MarkCompactPrologue(bool is_compacting);
|
94
109
|
static void MarkCompactEpilogue(bool is_compacting);
|
95
110
|
static bool IsLockedByCurrentThread() { return mutex_owner_.IsSelf(); }
|
@@ -34,57 +34,6 @@
|
|
34
34
|
namespace v8 {
|
35
35
|
namespace internal {
|
36
36
|
|
37
|
-
// ----------------------------------------------------------------------------
|
38
|
-
// Implementation UseCount.
|
39
|
-
|
40
|
-
UseCount::UseCount()
|
41
|
-
: nreads_(0),
|
42
|
-
nwrites_(0) {
|
43
|
-
}
|
44
|
-
|
45
|
-
|
46
|
-
void UseCount::RecordRead(int weight) {
|
47
|
-
ASSERT(weight > 0);
|
48
|
-
nreads_ += weight;
|
49
|
-
// We must have a positive nreads_ here. Handle
|
50
|
-
// any kind of overflow by setting nreads_ to
|
51
|
-
// some large-ish value.
|
52
|
-
if (nreads_ <= 0) nreads_ = 1000000;
|
53
|
-
ASSERT(is_read() & is_used());
|
54
|
-
}
|
55
|
-
|
56
|
-
|
57
|
-
void UseCount::RecordWrite(int weight) {
|
58
|
-
ASSERT(weight > 0);
|
59
|
-
nwrites_ += weight;
|
60
|
-
// We must have a positive nwrites_ here. Handle
|
61
|
-
// any kind of overflow by setting nwrites_ to
|
62
|
-
// some large-ish value.
|
63
|
-
if (nwrites_ <= 0) nwrites_ = 1000000;
|
64
|
-
ASSERT(is_written() && is_used());
|
65
|
-
}
|
66
|
-
|
67
|
-
|
68
|
-
void UseCount::RecordAccess(int weight) {
|
69
|
-
RecordRead(weight);
|
70
|
-
RecordWrite(weight);
|
71
|
-
}
|
72
|
-
|
73
|
-
|
74
|
-
void UseCount::RecordUses(UseCount* uses) {
|
75
|
-
if (uses->nreads() > 0) RecordRead(uses->nreads());
|
76
|
-
if (uses->nwrites() > 0) RecordWrite(uses->nwrites());
|
77
|
-
}
|
78
|
-
|
79
|
-
|
80
|
-
#ifdef DEBUG
|
81
|
-
void UseCount::Print() {
|
82
|
-
// PrintF("r = %d, w = %d", nreads_, nwrites_);
|
83
|
-
PrintF("%du = %dr + %dw", nuses(), nreads(), nwrites());
|
84
|
-
}
|
85
|
-
#endif
|
86
|
-
|
87
|
-
|
88
37
|
// ----------------------------------------------------------------------------
|
89
38
|
// Implementation StaticType.
|
90
39
|
|
@@ -136,6 +85,12 @@ Slot* Variable::slot() const {
|
|
136
85
|
}
|
137
86
|
|
138
87
|
|
88
|
+
bool Variable::IsStackAllocated() const {
|
89
|
+
Slot* s = slot();
|
90
|
+
return s != NULL && s->IsStackAllocated();
|
91
|
+
}
|
92
|
+
|
93
|
+
|
139
94
|
Variable::Variable(Scope* scope,
|
140
95
|
Handle<String> name,
|
141
96
|
Mode mode,
|
@@ -148,6 +103,7 @@ Variable::Variable(Scope* scope,
|
|
148
103
|
kind_(kind),
|
149
104
|
local_if_not_shadowed_(NULL),
|
150
105
|
is_accessed_from_inner_scope_(false),
|
106
|
+
is_used_(false),
|
151
107
|
rewrite_(NULL) {
|
152
108
|
// names must be canonicalized for fast equality checks
|
153
109
|
ASSERT(name->IsSymbol());
|
@@ -33,35 +33,6 @@
|
|
33
33
|
namespace v8 {
|
34
34
|
namespace internal {
|
35
35
|
|
36
|
-
class UseCount BASE_EMBEDDED {
|
37
|
-
public:
|
38
|
-
UseCount();
|
39
|
-
|
40
|
-
// Inform the node of a "use". The weight can be used to indicate
|
41
|
-
// heavier use, for instance if the variable is accessed inside a loop.
|
42
|
-
void RecordRead(int weight);
|
43
|
-
void RecordWrite(int weight);
|
44
|
-
void RecordAccess(int weight); // records a read & write
|
45
|
-
void RecordUses(UseCount* uses);
|
46
|
-
|
47
|
-
int nreads() const { return nreads_; }
|
48
|
-
int nwrites() const { return nwrites_; }
|
49
|
-
int nuses() const { return nreads_ + nwrites_; }
|
50
|
-
|
51
|
-
bool is_read() const { return nreads() > 0; }
|
52
|
-
bool is_written() const { return nwrites() > 0; }
|
53
|
-
bool is_used() const { return nuses() > 0; }
|
54
|
-
|
55
|
-
#ifdef DEBUG
|
56
|
-
void Print();
|
57
|
-
#endif
|
58
|
-
|
59
|
-
private:
|
60
|
-
int nreads_;
|
61
|
-
int nwrites_;
|
62
|
-
};
|
63
|
-
|
64
|
-
|
65
36
|
// Variables and AST expression nodes can track their "type" to enable
|
66
37
|
// optimizations and removal of redundant checks when generating code.
|
67
38
|
|
@@ -99,8 +70,6 @@ class StaticType {
|
|
99
70
|
|
100
71
|
private:
|
101
72
|
Kind kind_;
|
102
|
-
|
103
|
-
DISALLOW_COPY_AND_ASSIGN(StaticType);
|
104
73
|
};
|
105
74
|
|
106
75
|
|
@@ -168,13 +137,15 @@ class Variable: public ZoneObject {
|
|
168
137
|
bool is_accessed_from_inner_scope() const {
|
169
138
|
return is_accessed_from_inner_scope_;
|
170
139
|
}
|
171
|
-
|
172
|
-
|
140
|
+
bool is_used() { return is_used_; }
|
141
|
+
void set_is_used(bool flag) { is_used_ = flag; }
|
173
142
|
|
174
143
|
bool IsVariable(Handle<String> n) const {
|
175
144
|
return !is_this() && name().is_identical_to(n);
|
176
145
|
}
|
177
146
|
|
147
|
+
bool IsStackAllocated() const;
|
148
|
+
|
178
149
|
bool is_dynamic() const {
|
179
150
|
return (mode_ == DYNAMIC ||
|
180
151
|
mode_ == DYNAMIC_GLOBAL ||
|
@@ -216,8 +187,7 @@ class Variable: public ZoneObject {
|
|
216
187
|
|
217
188
|
// Usage info.
|
218
189
|
bool is_accessed_from_inner_scope_; // set by variable resolver
|
219
|
-
|
220
|
-
UseCount obj_uses_; // uses of the object the variable points to
|
190
|
+
bool is_used_;
|
221
191
|
|
222
192
|
// Static type information
|
223
193
|
StaticType type_;
|
@@ -33,9 +33,9 @@
|
|
33
33
|
// NOTE these macros are used by the SCons build script so their names
|
34
34
|
// cannot be changed without changing the SCons build script.
|
35
35
|
#define MAJOR_VERSION 2
|
36
|
-
#define MINOR_VERSION
|
37
|
-
#define BUILD_NUMBER
|
38
|
-
#define PATCH_LEVEL
|
36
|
+
#define MINOR_VERSION 2
|
37
|
+
#define BUILD_NUMBER 8
|
38
|
+
#define PATCH_LEVEL 0
|
39
39
|
#define CANDIDATE_VERSION false
|
40
40
|
|
41
41
|
// Define SONAME to have the SCons build the put a specific SONAME into the
|
File without changes
|
@@ -0,0 +1,152 @@
|
|
1
|
+
// Copyright 2010 the V8 project authors. All rights reserved.
|
2
|
+
// Redistribution and use in source and binary forms, with or without
|
3
|
+
// modification, are permitted provided that the following conditions are
|
4
|
+
// met:
|
5
|
+
//
|
6
|
+
// * Redistributions of source code must retain the above copyright
|
7
|
+
// notice, this list of conditions and the following disclaimer.
|
8
|
+
// * Redistributions in binary form must reproduce the above
|
9
|
+
// copyright notice, this list of conditions and the following
|
10
|
+
// disclaimer in the documentation and/or other materials provided
|
11
|
+
// with the distribution.
|
12
|
+
// * Neither the name of Google Inc. nor the names of its
|
13
|
+
// contributors may be used to endorse or promote products derived
|
14
|
+
// from this software without specific prior written permission.
|
15
|
+
//
|
16
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
18
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
20
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
23
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
24
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
+
|
28
|
+
#ifndef V8_VIRTUAL_FRAME_HEAVY_INL_H_
|
29
|
+
#define V8_VIRTUAL_FRAME_HEAVY_INL_H_
|
30
|
+
|
31
|
+
#include "type-info.h"
|
32
|
+
#include "register-allocator.h"
|
33
|
+
#include "scopes.h"
|
34
|
+
|
35
|
+
namespace v8 {
|
36
|
+
namespace internal {
|
37
|
+
|
38
|
+
// On entry to a function, the virtual frame already contains the receiver,
|
39
|
+
// the parameters, and a return address. All frame elements are in memory.
|
40
|
+
VirtualFrame::VirtualFrame()
|
41
|
+
: elements_(parameter_count() + local_count() + kPreallocatedElements),
|
42
|
+
stack_pointer_(parameter_count() + 1) { // 0-based index of TOS.
|
43
|
+
for (int i = 0; i <= stack_pointer_; i++) {
|
44
|
+
elements_.Add(FrameElement::MemoryElement(TypeInfo::Unknown()));
|
45
|
+
}
|
46
|
+
for (int i = 0; i < RegisterAllocator::kNumRegisters; i++) {
|
47
|
+
register_locations_[i] = kIllegalIndex;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
|
52
|
+
// When cloned, a frame is a deep copy of the original.
|
53
|
+
VirtualFrame::VirtualFrame(VirtualFrame* original)
|
54
|
+
: elements_(original->element_count()),
|
55
|
+
stack_pointer_(original->stack_pointer_) {
|
56
|
+
elements_.AddAll(original->elements_);
|
57
|
+
// Copy register locations from original.
|
58
|
+
memcpy(®ister_locations_,
|
59
|
+
original->register_locations_,
|
60
|
+
sizeof(register_locations_));
|
61
|
+
}
|
62
|
+
|
63
|
+
|
64
|
+
void VirtualFrame::PushFrameSlotAt(int index) {
|
65
|
+
elements_.Add(CopyElementAt(index));
|
66
|
+
}
|
67
|
+
|
68
|
+
|
69
|
+
void VirtualFrame::Push(Register reg, TypeInfo info) {
|
70
|
+
if (is_used(reg)) {
|
71
|
+
int index = register_location(reg);
|
72
|
+
FrameElement element = CopyElementAt(index, info);
|
73
|
+
elements_.Add(element);
|
74
|
+
} else {
|
75
|
+
Use(reg, element_count());
|
76
|
+
FrameElement element =
|
77
|
+
FrameElement::RegisterElement(reg, FrameElement::NOT_SYNCED, info);
|
78
|
+
elements_.Add(element);
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
void VirtualFrame::Push(Handle<Object> value) {
|
84
|
+
FrameElement element =
|
85
|
+
FrameElement::ConstantElement(value, FrameElement::NOT_SYNCED);
|
86
|
+
elements_.Add(element);
|
87
|
+
}
|
88
|
+
|
89
|
+
|
90
|
+
bool VirtualFrame::Equals(VirtualFrame* other) {
|
91
|
+
#ifdef DEBUG
|
92
|
+
for (int i = 0; i < RegisterAllocator::kNumRegisters; i++) {
|
93
|
+
if (register_location(i) != other->register_location(i)) {
|
94
|
+
return false;
|
95
|
+
}
|
96
|
+
}
|
97
|
+
if (element_count() != other->element_count()) return false;
|
98
|
+
#endif
|
99
|
+
if (stack_pointer_ != other->stack_pointer_) return false;
|
100
|
+
for (int i = 0; i < element_count(); i++) {
|
101
|
+
if (!elements_[i].Equals(other->elements_[i])) return false;
|
102
|
+
}
|
103
|
+
|
104
|
+
return true;
|
105
|
+
}
|
106
|
+
|
107
|
+
|
108
|
+
void VirtualFrame::SetTypeForLocalAt(int index, TypeInfo info) {
|
109
|
+
elements_[local0_index() + index].set_type_info(info);
|
110
|
+
}
|
111
|
+
|
112
|
+
|
113
|
+
// Make the type of all elements be MEMORY.
|
114
|
+
void VirtualFrame::SpillAll() {
|
115
|
+
for (int i = 0; i < element_count(); i++) {
|
116
|
+
SpillElementAt(i);
|
117
|
+
}
|
118
|
+
}
|
119
|
+
|
120
|
+
|
121
|
+
void VirtualFrame::PrepareForReturn() {
|
122
|
+
// Spill all locals. This is necessary to make sure all locals have
|
123
|
+
// the right value when breaking at the return site in the debugger.
|
124
|
+
for (int i = 0; i < expression_base_index(); i++) {
|
125
|
+
SpillElementAt(i);
|
126
|
+
}
|
127
|
+
}
|
128
|
+
|
129
|
+
|
130
|
+
void VirtualFrame::SetTypeForParamAt(int index, TypeInfo info) {
|
131
|
+
elements_[param0_index() + index].set_type_info(info);
|
132
|
+
}
|
133
|
+
|
134
|
+
|
135
|
+
void VirtualFrame::Nip(int num_dropped) {
|
136
|
+
ASSERT(num_dropped >= 0);
|
137
|
+
if (num_dropped == 0) return;
|
138
|
+
Result tos = Pop();
|
139
|
+
if (num_dropped > 1) {
|
140
|
+
Drop(num_dropped - 1);
|
141
|
+
}
|
142
|
+
SetElementAt(0, &tos);
|
143
|
+
}
|
144
|
+
|
145
|
+
|
146
|
+
void VirtualFrame::Push(Smi* value) {
|
147
|
+
Push(Handle<Object> (value));
|
148
|
+
}
|
149
|
+
|
150
|
+
} } // namespace v8::internal
|
151
|
+
|
152
|
+
#endif // V8_VIRTUAL_FRAME_HEAVY_INL_H_
|
@@ -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:
|
@@ -29,26 +29,84 @@
|
|
29
29
|
|
30
30
|
#include "codegen-inl.h"
|
31
31
|
#include "register-allocator-inl.h"
|
32
|
+
#include "virtual-frame-inl.h"
|
32
33
|
|
33
34
|
namespace v8 {
|
34
35
|
namespace internal {
|
35
36
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
37
|
+
void VirtualFrame::SetElementAt(int index, Result* value) {
|
38
|
+
int frame_index = element_count() - index - 1;
|
39
|
+
ASSERT(frame_index >= 0);
|
40
|
+
ASSERT(frame_index < element_count());
|
41
|
+
ASSERT(value->is_valid());
|
42
|
+
FrameElement original = elements_[frame_index];
|
43
|
+
|
44
|
+
// Early exit if the element is the same as the one being set.
|
45
|
+
bool same_register = original.is_register()
|
46
|
+
&& value->is_register()
|
47
|
+
&& original.reg().is(value->reg());
|
48
|
+
bool same_constant = original.is_constant()
|
49
|
+
&& value->is_constant()
|
50
|
+
&& original.handle().is_identical_to(value->handle());
|
51
|
+
if (same_register || same_constant) {
|
52
|
+
value->Unuse();
|
53
|
+
return;
|
54
|
+
}
|
55
|
+
|
56
|
+
InvalidateFrameSlotAt(frame_index);
|
57
|
+
|
58
|
+
if (value->is_register()) {
|
59
|
+
if (is_used(value->reg())) {
|
60
|
+
// The register already appears on the frame. Either the existing
|
61
|
+
// register element, or the new element at frame_index, must be made
|
62
|
+
// a copy.
|
63
|
+
int i = register_location(value->reg());
|
64
|
+
|
65
|
+
if (i < frame_index) {
|
66
|
+
// The register FrameElement is lower in the frame than the new copy.
|
67
|
+
elements_[frame_index] = CopyElementAt(i);
|
68
|
+
} else {
|
69
|
+
// There was an early bailout for the case of setting a
|
70
|
+
// register element to itself.
|
71
|
+
ASSERT(i != frame_index);
|
72
|
+
elements_[frame_index] = elements_[i];
|
73
|
+
elements_[i] = CopyElementAt(frame_index);
|
74
|
+
if (elements_[frame_index].is_synced()) {
|
75
|
+
elements_[i].set_sync();
|
76
|
+
}
|
77
|
+
elements_[frame_index].clear_sync();
|
78
|
+
set_register_location(value->reg(), frame_index);
|
79
|
+
for (int j = i + 1; j < element_count(); j++) {
|
80
|
+
if (elements_[j].is_copy() && elements_[j].index() == i) {
|
81
|
+
elements_[j].set_index(frame_index);
|
82
|
+
}
|
83
|
+
}
|
84
|
+
}
|
85
|
+
} else {
|
86
|
+
// The register value->reg() was not already used on the frame.
|
87
|
+
Use(value->reg(), frame_index);
|
88
|
+
elements_[frame_index] =
|
89
|
+
FrameElement::RegisterElement(value->reg(),
|
90
|
+
FrameElement::NOT_SYNCED,
|
91
|
+
value->type_info());
|
92
|
+
}
|
93
|
+
} else {
|
94
|
+
ASSERT(value->is_constant());
|
95
|
+
elements_[frame_index] =
|
96
|
+
FrameElement::ConstantElement(value->handle(),
|
97
|
+
FrameElement::NOT_SYNCED);
|
98
|
+
}
|
99
|
+
value->Unuse();
|
48
100
|
}
|
49
101
|
|
50
102
|
|
51
|
-
|
103
|
+
// Create a duplicate of an existing valid frame element.
|
104
|
+
// We can pass an optional number type information that will override the
|
105
|
+
// existing information about the backing element. The new information must
|
106
|
+
// not conflict with the existing type information and must be equally or
|
107
|
+
// more precise. The default parameter value kUninitialized means that there
|
108
|
+
// is no additional information.
|
109
|
+
FrameElement VirtualFrame::CopyElementAt(int index, TypeInfo info) {
|
52
110
|
ASSERT(index >= 0);
|
53
111
|
ASSERT(index < element_count());
|
54
112
|
|
@@ -71,15 +129,26 @@ FrameElement VirtualFrame::CopyElementAt(int index) {
|
|
71
129
|
// Fall through.
|
72
130
|
|
73
131
|
case FrameElement::MEMORY: // Fall through.
|
74
|
-
case FrameElement::REGISTER:
|
132
|
+
case FrameElement::REGISTER: {
|
75
133
|
// All copies are backed by memory or register locations.
|
76
134
|
result.set_type(FrameElement::COPY);
|
77
135
|
result.clear_copied();
|
78
136
|
result.clear_sync();
|
79
137
|
result.set_index(index);
|
80
138
|
elements_[index].set_copied();
|
139
|
+
// Update backing element's number information.
|
140
|
+
TypeInfo existing = elements_[index].type_info();
|
141
|
+
ASSERT(!existing.IsUninitialized());
|
142
|
+
// Assert that the new type information (a) does not conflict with the
|
143
|
+
// existing one and (b) is equally or more precise.
|
144
|
+
ASSERT((info.ToInt() & existing.ToInt()) == existing.ToInt());
|
145
|
+
ASSERT((info.ToInt() | existing.ToInt()) == info.ToInt());
|
146
|
+
|
147
|
+
elements_[index].set_type_info(!info.IsUninitialized()
|
148
|
+
? info
|
149
|
+
: existing);
|
81
150
|
break;
|
82
|
-
|
151
|
+
}
|
83
152
|
case FrameElement::INVALID:
|
84
153
|
// We should not try to copy invalid elements.
|
85
154
|
UNREACHABLE();
|
@@ -98,7 +167,7 @@ void VirtualFrame::Adjust(int count) {
|
|
98
167
|
ASSERT(stack_pointer_ == element_count() - 1);
|
99
168
|
|
100
169
|
for (int i = 0; i < count; i++) {
|
101
|
-
elements_.Add(FrameElement::MemoryElement());
|
170
|
+
elements_.Add(FrameElement::MemoryElement(TypeInfo::Unknown()));
|
102
171
|
}
|
103
172
|
stack_pointer_ += count;
|
104
173
|
}
|
@@ -124,31 +193,27 @@ void VirtualFrame::ForgetElements(int count) {
|
|
124
193
|
}
|
125
194
|
|
126
195
|
|
127
|
-
// If there are any registers referenced only by the frame, spill one.
|
128
|
-
Register VirtualFrame::SpillAnyRegister() {
|
129
|
-
// Find the leftmost (ordered by register number) register whose only
|
130
|
-
// reference is in the frame.
|
131
|
-
for (int i = 0; i < RegisterAllocator::kNumRegisters; i++) {
|
132
|
-
if (is_used(i) && cgen()->allocator()->count(i) == 1) {
|
133
|
-
SpillElementAt(register_location(i));
|
134
|
-
ASSERT(!cgen()->allocator()->is_used(i));
|
135
|
-
return RegisterAllocator::ToRegister(i);
|
136
|
-
}
|
137
|
-
}
|
138
|
-
return no_reg;
|
139
|
-
}
|
140
|
-
|
141
|
-
|
142
196
|
// Make the type of the element at a given index be MEMORY.
|
143
197
|
void VirtualFrame::SpillElementAt(int index) {
|
144
198
|
if (!elements_[index].is_valid()) return;
|
145
199
|
|
146
200
|
SyncElementAt(index);
|
201
|
+
// Number type information is preserved.
|
202
|
+
// Copies get their number information from their backing element.
|
203
|
+
TypeInfo info;
|
204
|
+
if (!elements_[index].is_copy()) {
|
205
|
+
info = elements_[index].type_info();
|
206
|
+
} else {
|
207
|
+
info = elements_[elements_[index].index()].type_info();
|
208
|
+
}
|
147
209
|
// The element is now in memory. Its copied flag is preserved.
|
148
|
-
FrameElement new_element = FrameElement::MemoryElement();
|
210
|
+
FrameElement new_element = FrameElement::MemoryElement(info);
|
149
211
|
if (elements_[index].is_copied()) {
|
150
212
|
new_element.set_copied();
|
151
213
|
}
|
214
|
+
if (elements_[index].is_untagged_int32()) {
|
215
|
+
new_element.set_untagged_int32(true);
|
216
|
+
}
|
152
217
|
if (elements_[index].is_register()) {
|
153
218
|
Unuse(elements_[index].reg());
|
154
219
|
}
|
@@ -168,14 +233,6 @@ void VirtualFrame::SyncElementAt(int index) {
|
|
168
233
|
}
|
169
234
|
|
170
235
|
|
171
|
-
// Make the type of all elements be MEMORY.
|
172
|
-
void VirtualFrame::SpillAll() {
|
173
|
-
for (int i = 0; i < element_count(); i++) {
|
174
|
-
SpillElementAt(i);
|
175
|
-
}
|
176
|
-
}
|
177
|
-
|
178
|
-
|
179
236
|
void VirtualFrame::PrepareMergeTo(VirtualFrame* expected) {
|
180
237
|
// Perform state changes on this frame that will make merge to the
|
181
238
|
// expected frame simpler or else increase the likelihood that his
|
@@ -238,144 +295,18 @@ void VirtualFrame::PrepareForCall(int spilled_args, int dropped_args) {
|
|
238
295
|
}
|
239
296
|
|
240
297
|
|
241
|
-
|
242
|
-
|
243
|
-
// the
|
244
|
-
|
245
|
-
SpillElementAt(i);
|
246
|
-
}
|
247
|
-
}
|
248
|
-
|
249
|
-
|
250
|
-
void VirtualFrame::SetElementAt(int index, Result* value) {
|
251
|
-
int frame_index = element_count() - index - 1;
|
252
|
-
ASSERT(frame_index >= 0);
|
253
|
-
ASSERT(frame_index < element_count());
|
254
|
-
ASSERT(value->is_valid());
|
255
|
-
FrameElement original = elements_[frame_index];
|
256
|
-
|
257
|
-
// Early exit if the element is the same as the one being set.
|
258
|
-
bool same_register = original.is_register()
|
259
|
-
&& value->is_register()
|
260
|
-
&& original.reg().is(value->reg());
|
261
|
-
bool same_constant = original.is_constant()
|
262
|
-
&& value->is_constant()
|
263
|
-
&& original.handle().is_identical_to(value->handle());
|
264
|
-
if (same_register || same_constant) {
|
265
|
-
value->Unuse();
|
266
|
-
return;
|
267
|
-
}
|
268
|
-
|
269
|
-
InvalidateFrameSlotAt(frame_index);
|
270
|
-
|
271
|
-
FrameElement new_element;
|
272
|
-
if (value->is_register()) {
|
273
|
-
if (is_used(value->reg())) {
|
274
|
-
// The register already appears on the frame. Either the existing
|
275
|
-
// register element, or the new element at frame_index, must be made
|
276
|
-
// a copy.
|
277
|
-
int i = register_location(value->reg());
|
278
|
-
|
279
|
-
if (i < frame_index) {
|
280
|
-
// The register FrameElement is lower in the frame than the new copy.
|
281
|
-
elements_[frame_index] = CopyElementAt(i);
|
282
|
-
} else {
|
283
|
-
// There was an early bailout for the case of setting a
|
284
|
-
// register element to itself.
|
285
|
-
ASSERT(i != frame_index);
|
286
|
-
elements_[frame_index] = elements_[i];
|
287
|
-
elements_[i] = CopyElementAt(frame_index);
|
288
|
-
if (elements_[frame_index].is_synced()) {
|
289
|
-
elements_[i].set_sync();
|
290
|
-
}
|
291
|
-
elements_[frame_index].clear_sync();
|
292
|
-
set_register_location(value->reg(), frame_index);
|
293
|
-
for (int j = i + 1; j < element_count(); j++) {
|
294
|
-
if (elements_[j].is_copy() && elements_[j].index() == i) {
|
295
|
-
elements_[j].set_index(frame_index);
|
296
|
-
}
|
297
|
-
}
|
298
|
-
}
|
299
|
-
} else {
|
300
|
-
// The register value->reg() was not already used on the frame.
|
301
|
-
Use(value->reg(), frame_index);
|
302
|
-
elements_[frame_index] =
|
303
|
-
FrameElement::RegisterElement(value->reg(),
|
304
|
-
FrameElement::NOT_SYNCED);
|
305
|
-
}
|
306
|
-
} else {
|
307
|
-
ASSERT(value->is_constant());
|
308
|
-
elements_[frame_index] =
|
309
|
-
FrameElement::ConstantElement(value->handle(),
|
310
|
-
FrameElement::NOT_SYNCED);
|
311
|
-
}
|
312
|
-
value->Unuse();
|
313
|
-
}
|
314
|
-
|
315
|
-
|
316
|
-
void VirtualFrame::PushFrameSlotAt(int index) {
|
317
|
-
elements_.Add(CopyElementAt(index));
|
318
|
-
}
|
319
|
-
|
320
|
-
|
321
|
-
void VirtualFrame::Push(Register reg) {
|
322
|
-
if (is_used(reg)) {
|
323
|
-
int index = register_location(reg);
|
324
|
-
FrameElement element = CopyElementAt(index);
|
325
|
-
elements_.Add(element);
|
326
|
-
} else {
|
327
|
-
Use(reg, element_count());
|
328
|
-
FrameElement element =
|
329
|
-
FrameElement::RegisterElement(reg,
|
330
|
-
FrameElement::NOT_SYNCED);
|
331
|
-
elements_.Add(element);
|
332
|
-
}
|
333
|
-
}
|
334
|
-
|
335
|
-
|
336
|
-
void VirtualFrame::Push(Handle<Object> value) {
|
337
|
-
FrameElement element =
|
338
|
-
FrameElement::ConstantElement(value, FrameElement::NOT_SYNCED);
|
339
|
-
elements_.Add(element);
|
340
|
-
}
|
341
|
-
|
342
|
-
|
343
|
-
void VirtualFrame::Nip(int num_dropped) {
|
344
|
-
ASSERT(num_dropped >= 0);
|
345
|
-
if (num_dropped == 0) return;
|
346
|
-
Result tos = Pop();
|
347
|
-
if (num_dropped > 1) {
|
348
|
-
Drop(num_dropped - 1);
|
349
|
-
}
|
350
|
-
SetElementAt(0, &tos);
|
351
|
-
}
|
352
|
-
|
353
|
-
|
354
|
-
bool VirtualFrame::Equals(VirtualFrame* other) {
|
355
|
-
#ifdef DEBUG
|
298
|
+
// If there are any registers referenced only by the frame, spill one.
|
299
|
+
Register VirtualFrame::SpillAnyRegister() {
|
300
|
+
// Find the leftmost (ordered by register number) register whose only
|
301
|
+
// reference is in the frame.
|
356
302
|
for (int i = 0; i < RegisterAllocator::kNumRegisters; i++) {
|
357
|
-
if (
|
358
|
-
|
303
|
+
if (is_used(i) && cgen()->allocator()->count(i) == 1) {
|
304
|
+
SpillElementAt(register_location(i));
|
305
|
+
ASSERT(!cgen()->allocator()->is_used(i));
|
306
|
+
return RegisterAllocator::ToRegister(i);
|
359
307
|
}
|
360
308
|
}
|
361
|
-
|
362
|
-
#endif
|
363
|
-
if (stack_pointer_ != other->stack_pointer_) return false;
|
364
|
-
for (int i = 0; i < element_count(); i++) {
|
365
|
-
if (!elements_[i].Equals(other->elements_[i])) return false;
|
366
|
-
}
|
367
|
-
|
368
|
-
return true;
|
369
|
-
}
|
370
|
-
|
371
|
-
|
372
|
-
// Specialization of List::ResizeAdd to non-inlined version for FrameElements.
|
373
|
-
// The function ResizeAdd becomes a real function, whose implementation is the
|
374
|
-
// inlined ResizeAddInternal.
|
375
|
-
template <>
|
376
|
-
void List<FrameElement,
|
377
|
-
FreeStoreAllocationPolicy>::ResizeAdd(const FrameElement& element) {
|
378
|
-
ResizeAddInternal(element);
|
309
|
+
return no_reg;
|
379
310
|
}
|
380
311
|
|
381
312
|
} } // namespace v8::internal
|