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
@@ -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::SyncElementBelowStackPointer(int index) {
|
57
41
|
// Emit code to write elements below the stack pointer to their
|
58
42
|
// (already allocated) stack address.
|
@@ -173,10 +157,12 @@ void VirtualFrame::MakeMergable() {
|
|
173
157
|
for (int i = 0; i < element_count(); i++) {
|
174
158
|
FrameElement element = elements_[i];
|
175
159
|
|
160
|
+
// All number type information is reset to unknown for a mergable frame
|
161
|
+
// because of incoming back edges.
|
176
162
|
if (element.is_constant() || element.is_copy()) {
|
177
163
|
if (element.is_synced()) {
|
178
164
|
// Just spill.
|
179
|
-
elements_[i] = FrameElement::MemoryElement();
|
165
|
+
elements_[i] = FrameElement::MemoryElement(TypeInfo::Unknown());
|
180
166
|
} else {
|
181
167
|
// Allocate to a register.
|
182
168
|
FrameElement backing_element; // Invalid if not a copy.
|
@@ -187,7 +173,8 @@ void VirtualFrame::MakeMergable() {
|
|
187
173
|
ASSERT(fresh.is_valid()); // A register was spilled if all were in use.
|
188
174
|
elements_[i] =
|
189
175
|
FrameElement::RegisterElement(fresh.reg(),
|
190
|
-
FrameElement::NOT_SYNCED
|
176
|
+
FrameElement::NOT_SYNCED,
|
177
|
+
TypeInfo::Unknown());
|
191
178
|
Use(fresh.reg(), i);
|
192
179
|
|
193
180
|
// Emit a move.
|
@@ -220,6 +207,7 @@ void VirtualFrame::MakeMergable() {
|
|
220
207
|
// The copy flag is not relied on before the end of this loop,
|
221
208
|
// including when registers are spilled.
|
222
209
|
elements_[i].clear_copied();
|
210
|
+
elements_[i].set_type_info(TypeInfo::Unknown());
|
223
211
|
}
|
224
212
|
}
|
225
213
|
}
|
@@ -607,10 +595,14 @@ int VirtualFrame::InvalidateFrameSlotAt(int index) {
|
|
607
595
|
// Set the new backing element.
|
608
596
|
if (elements_[new_backing_index].is_synced()) {
|
609
597
|
elements_[new_backing_index] =
|
610
|
-
FrameElement::RegisterElement(backing_reg,
|
598
|
+
FrameElement::RegisterElement(backing_reg,
|
599
|
+
FrameElement::SYNCED,
|
600
|
+
original.type_info());
|
611
601
|
} else {
|
612
602
|
elements_[new_backing_index] =
|
613
|
-
FrameElement::RegisterElement(backing_reg,
|
603
|
+
FrameElement::RegisterElement(backing_reg,
|
604
|
+
FrameElement::NOT_SYNCED,
|
605
|
+
original.type_info());
|
614
606
|
}
|
615
607
|
// Update the other copies.
|
616
608
|
for (int i = new_backing_index + 1; i < element_count(); i++) {
|
@@ -641,7 +633,8 @@ void VirtualFrame::TakeFrameSlotAt(int index) {
|
|
641
633
|
ASSERT(fresh.is_valid());
|
642
634
|
FrameElement new_element =
|
643
635
|
FrameElement::RegisterElement(fresh.reg(),
|
644
|
-
FrameElement::NOT_SYNCED
|
636
|
+
FrameElement::NOT_SYNCED,
|
637
|
+
original.type_info());
|
645
638
|
Use(fresh.reg(), element_count());
|
646
639
|
elements_.Add(new_element);
|
647
640
|
__ mov(fresh.reg(), Operand(ebp, fp_relative(index)));
|
@@ -782,6 +775,89 @@ void VirtualFrame::StoreToFrameSlotAt(int index) {
|
|
782
775
|
}
|
783
776
|
|
784
777
|
|
778
|
+
void VirtualFrame::UntaggedPushFrameSlotAt(int index) {
|
779
|
+
ASSERT(index >= 0);
|
780
|
+
ASSERT(index <= element_count());
|
781
|
+
FrameElement original = elements_[index];
|
782
|
+
if (original.is_copy()) {
|
783
|
+
original = elements_[original.index()];
|
784
|
+
index = original.index();
|
785
|
+
}
|
786
|
+
|
787
|
+
switch (original.type()) {
|
788
|
+
case FrameElement::MEMORY:
|
789
|
+
case FrameElement::REGISTER: {
|
790
|
+
Label done;
|
791
|
+
// Emit code to load the original element's data into a register.
|
792
|
+
// Push that register as a FrameElement on top of the frame.
|
793
|
+
Result fresh = cgen()->allocator()->Allocate();
|
794
|
+
ASSERT(fresh.is_valid());
|
795
|
+
Register fresh_reg = fresh.reg();
|
796
|
+
FrameElement new_element =
|
797
|
+
FrameElement::RegisterElement(fresh_reg,
|
798
|
+
FrameElement::NOT_SYNCED,
|
799
|
+
original.type_info());
|
800
|
+
new_element.set_untagged_int32(true);
|
801
|
+
Use(fresh_reg, element_count());
|
802
|
+
fresh.Unuse(); // BreakTarget does not handle a live Result well.
|
803
|
+
elements_.Add(new_element);
|
804
|
+
if (original.is_register()) {
|
805
|
+
__ mov(fresh_reg, original.reg());
|
806
|
+
} else {
|
807
|
+
ASSERT(original.is_memory());
|
808
|
+
__ mov(fresh_reg, Operand(ebp, fp_relative(index)));
|
809
|
+
}
|
810
|
+
// Now convert the value to int32, or bail out.
|
811
|
+
if (original.type_info().IsSmi()) {
|
812
|
+
__ SmiUntag(fresh_reg);
|
813
|
+
// Pushing the element is completely done.
|
814
|
+
} else {
|
815
|
+
__ test(fresh_reg, Immediate(kSmiTagMask));
|
816
|
+
Label not_smi;
|
817
|
+
__ j(not_zero, ¬_smi);
|
818
|
+
__ SmiUntag(fresh_reg);
|
819
|
+
__ jmp(&done);
|
820
|
+
|
821
|
+
__ bind(¬_smi);
|
822
|
+
if (!original.type_info().IsNumber()) {
|
823
|
+
__ cmp(FieldOperand(fresh_reg, HeapObject::kMapOffset),
|
824
|
+
Factory::heap_number_map());
|
825
|
+
cgen()->unsafe_bailout_->Branch(not_equal);
|
826
|
+
}
|
827
|
+
|
828
|
+
if (!CpuFeatures::IsSupported(SSE2)) {
|
829
|
+
UNREACHABLE();
|
830
|
+
} else {
|
831
|
+
CpuFeatures::Scope use_sse2(SSE2);
|
832
|
+
__ movdbl(xmm0, FieldOperand(fresh_reg, HeapNumber::kValueOffset));
|
833
|
+
__ cvttsd2si(fresh_reg, Operand(xmm0));
|
834
|
+
__ cvtsi2sd(xmm1, Operand(fresh_reg));
|
835
|
+
__ ucomisd(xmm0, xmm1);
|
836
|
+
cgen()->unsafe_bailout_->Branch(not_equal);
|
837
|
+
cgen()->unsafe_bailout_->Branch(parity_even); // NaN.
|
838
|
+
// Test for negative zero.
|
839
|
+
__ test(fresh_reg, Operand(fresh_reg));
|
840
|
+
__ j(not_zero, &done);
|
841
|
+
__ movmskpd(fresh_reg, xmm0);
|
842
|
+
__ and_(fresh_reg, 0x1);
|
843
|
+
cgen()->unsafe_bailout_->Branch(not_equal);
|
844
|
+
}
|
845
|
+
__ bind(&done);
|
846
|
+
}
|
847
|
+
break;
|
848
|
+
}
|
849
|
+
case FrameElement::CONSTANT:
|
850
|
+
elements_.Add(CopyElementAt(index));
|
851
|
+
elements_[element_count() - 1].set_untagged_int32(true);
|
852
|
+
break;
|
853
|
+
case FrameElement::COPY:
|
854
|
+
case FrameElement::INVALID:
|
855
|
+
UNREACHABLE();
|
856
|
+
break;
|
857
|
+
}
|
858
|
+
}
|
859
|
+
|
860
|
+
|
785
861
|
void VirtualFrame::PushTryHandler(HandlerType type) {
|
786
862
|
ASSERT(cgen()->HasValidEntryRegisters());
|
787
863
|
// Grow the expression stack by handler size less one (the return
|
@@ -833,6 +909,25 @@ Result VirtualFrame::CallStub(CodeStub* stub, Result* arg0, Result* arg1) {
|
|
833
909
|
}
|
834
910
|
|
835
911
|
|
912
|
+
Result VirtualFrame::CallJSFunction(int arg_count) {
|
913
|
+
Result function = Pop();
|
914
|
+
|
915
|
+
// InvokeFunction requires function in edi. Move it in there.
|
916
|
+
function.ToRegister(edi);
|
917
|
+
function.Unuse();
|
918
|
+
|
919
|
+
// +1 for receiver.
|
920
|
+
PrepareForCall(arg_count + 1, arg_count + 1);
|
921
|
+
ASSERT(cgen()->HasValidEntryRegisters());
|
922
|
+
ParameterCount count(arg_count);
|
923
|
+
__ InvokeFunction(edi, count, CALL_FUNCTION);
|
924
|
+
RestoreContextRegister();
|
925
|
+
Result result = cgen()->allocator()->Allocate(eax);
|
926
|
+
ASSERT(result.is_valid());
|
927
|
+
return result;
|
928
|
+
}
|
929
|
+
|
930
|
+
|
836
931
|
Result VirtualFrame::CallRuntime(Runtime::Function* f, int arg_count) {
|
837
932
|
PrepareForCall(arg_count, arg_count);
|
838
933
|
ASSERT(cgen()->HasValidEntryRegisters());
|
@@ -853,6 +948,17 @@ Result VirtualFrame::CallRuntime(Runtime::FunctionId id, int arg_count) {
|
|
853
948
|
}
|
854
949
|
|
855
950
|
|
951
|
+
#ifdef ENABLE_DEBUGGER_SUPPORT
|
952
|
+
void VirtualFrame::DebugBreak() {
|
953
|
+
PrepareForCall(0, 0);
|
954
|
+
ASSERT(cgen()->HasValidEntryRegisters());
|
955
|
+
__ DebugBreak();
|
956
|
+
Result result = cgen()->allocator()->Allocate(eax);
|
957
|
+
ASSERT(result.is_valid());
|
958
|
+
}
|
959
|
+
#endif
|
960
|
+
|
961
|
+
|
856
962
|
Result VirtualFrame::InvokeBuiltin(Builtins::JavaScript id,
|
857
963
|
InvokeFlag flag,
|
858
964
|
int arg_count) {
|
@@ -875,69 +981,120 @@ Result VirtualFrame::RawCallCodeObject(Handle<Code> code,
|
|
875
981
|
}
|
876
982
|
|
877
983
|
|
984
|
+
// This function assumes that the only results that could be in a_reg or b_reg
|
985
|
+
// are a and b. Other results can be live, but must not be in a_reg or b_reg.
|
986
|
+
void VirtualFrame::MoveResultsToRegisters(Result* a,
|
987
|
+
Result* b,
|
988
|
+
Register a_reg,
|
989
|
+
Register b_reg) {
|
990
|
+
if (a->is_register() && a->reg().is(a_reg)) {
|
991
|
+
b->ToRegister(b_reg);
|
992
|
+
} else if (!cgen()->allocator()->is_used(a_reg)) {
|
993
|
+
a->ToRegister(a_reg);
|
994
|
+
b->ToRegister(b_reg);
|
995
|
+
} else if (cgen()->allocator()->is_used(b_reg)) {
|
996
|
+
// a must be in b_reg, b in a_reg.
|
997
|
+
__ xchg(a_reg, b_reg);
|
998
|
+
// Results a and b will be invalidated, so it is ok if they are switched.
|
999
|
+
} else {
|
1000
|
+
b->ToRegister(b_reg);
|
1001
|
+
a->ToRegister(a_reg);
|
1002
|
+
}
|
1003
|
+
a->Unuse();
|
1004
|
+
b->Unuse();
|
1005
|
+
}
|
1006
|
+
|
1007
|
+
|
878
1008
|
Result VirtualFrame::CallLoadIC(RelocInfo::Mode mode) {
|
879
1009
|
// Name and receiver are on the top of the frame. The IC expects
|
880
|
-
// name in ecx and receiver
|
881
|
-
// receiver.
|
882
|
-
Handle<Code> ic(Builtins::builtin(Builtins::LoadIC_Initialize));
|
1010
|
+
// name in ecx and receiver in eax.
|
883
1011
|
Result name = Pop();
|
884
|
-
|
885
|
-
|
886
|
-
name
|
1012
|
+
Result receiver = Pop();
|
1013
|
+
PrepareForCall(0, 0); // No stack arguments.
|
1014
|
+
MoveResultsToRegisters(&name, &receiver, ecx, eax);
|
1015
|
+
|
1016
|
+
Handle<Code> ic(Builtins::builtin(Builtins::LoadIC_Initialize));
|
887
1017
|
return RawCallCodeObject(ic, mode);
|
888
1018
|
}
|
889
1019
|
|
890
1020
|
|
891
1021
|
Result VirtualFrame::CallKeyedLoadIC(RelocInfo::Mode mode) {
|
892
|
-
// Key and receiver are on top of the frame.
|
893
|
-
|
1022
|
+
// Key and receiver are on top of the frame. Put them in eax and edx.
|
1023
|
+
Result key = Pop();
|
1024
|
+
Result receiver = Pop();
|
1025
|
+
PrepareForCall(0, 0);
|
1026
|
+
MoveResultsToRegisters(&key, &receiver, eax, edx);
|
1027
|
+
|
894
1028
|
Handle<Code> ic(Builtins::builtin(Builtins::KeyedLoadIC_Initialize));
|
895
|
-
PrepareForCall(2, 0); // Two stack args, neither callee-dropped.
|
896
1029
|
return RawCallCodeObject(ic, mode);
|
897
1030
|
}
|
898
1031
|
|
899
1032
|
|
900
|
-
Result VirtualFrame::CallStoreIC() {
|
901
|
-
//
|
902
|
-
// expects name in ecx, value in eax, and receiver
|
903
|
-
// does not drop the receiver.
|
1033
|
+
Result VirtualFrame::CallStoreIC(Handle<String> name, bool is_contextual) {
|
1034
|
+
// Value and (if not contextual) receiver are on top of the frame.
|
1035
|
+
// The IC expects name in ecx, value in eax, and receiver in edx.
|
904
1036
|
Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Initialize));
|
905
|
-
Result name = Pop();
|
906
1037
|
Result value = Pop();
|
907
|
-
|
908
|
-
|
909
|
-
if (value.is_register() && value.reg().is(ecx)) {
|
910
|
-
if (name.is_register() && name.reg().is(eax)) {
|
911
|
-
// Wrong registers.
|
912
|
-
__ xchg(eax, ecx);
|
913
|
-
} else {
|
914
|
-
// Register eax is free for value, which frees ecx for name.
|
915
|
-
value.ToRegister(eax);
|
916
|
-
name.ToRegister(ecx);
|
917
|
-
}
|
918
|
-
} else {
|
919
|
-
// Register ecx is free for name, which guarantees eax is free for
|
920
|
-
// value.
|
921
|
-
name.ToRegister(ecx);
|
1038
|
+
if (is_contextual) {
|
1039
|
+
PrepareForCall(0, 0);
|
922
1040
|
value.ToRegister(eax);
|
1041
|
+
__ mov(edx, Operand(esi, Context::SlotOffset(Context::GLOBAL_INDEX)));
|
1042
|
+
value.Unuse();
|
1043
|
+
} else {
|
1044
|
+
Result receiver = Pop();
|
1045
|
+
PrepareForCall(0, 0);
|
1046
|
+
MoveResultsToRegisters(&value, &receiver, eax, edx);
|
923
1047
|
}
|
924
|
-
|
925
|
-
name.Unuse();
|
926
|
-
value.Unuse();
|
1048
|
+
__ mov(ecx, name);
|
927
1049
|
return RawCallCodeObject(ic, RelocInfo::CODE_TARGET);
|
928
1050
|
}
|
929
1051
|
|
930
1052
|
|
931
1053
|
Result VirtualFrame::CallKeyedStoreIC() {
|
932
1054
|
// Value, key, and receiver are on the top of the frame. The IC
|
933
|
-
// expects value in eax
|
934
|
-
// not drop the key and receiver.
|
935
|
-
Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Initialize));
|
936
|
-
// TODO(1222589): Make the IC grab the values from the stack.
|
1055
|
+
// expects value in eax, key in ecx, and receiver in edx.
|
937
1056
|
Result value = Pop();
|
938
|
-
|
939
|
-
|
940
|
-
|
1057
|
+
Result key = Pop();
|
1058
|
+
Result receiver = Pop();
|
1059
|
+
PrepareForCall(0, 0);
|
1060
|
+
if (!cgen()->allocator()->is_used(eax) ||
|
1061
|
+
(value.is_register() && value.reg().is(eax))) {
|
1062
|
+
if (!cgen()->allocator()->is_used(eax)) {
|
1063
|
+
value.ToRegister(eax);
|
1064
|
+
}
|
1065
|
+
MoveResultsToRegisters(&key, &receiver, ecx, edx);
|
1066
|
+
value.Unuse();
|
1067
|
+
} else if (!cgen()->allocator()->is_used(ecx) ||
|
1068
|
+
(key.is_register() && key.reg().is(ecx))) {
|
1069
|
+
if (!cgen()->allocator()->is_used(ecx)) {
|
1070
|
+
key.ToRegister(ecx);
|
1071
|
+
}
|
1072
|
+
MoveResultsToRegisters(&value, &receiver, eax, edx);
|
1073
|
+
key.Unuse();
|
1074
|
+
} else if (!cgen()->allocator()->is_used(edx) ||
|
1075
|
+
(receiver.is_register() && receiver.reg().is(edx))) {
|
1076
|
+
if (!cgen()->allocator()->is_used(edx)) {
|
1077
|
+
receiver.ToRegister(edx);
|
1078
|
+
}
|
1079
|
+
MoveResultsToRegisters(&key, &value, ecx, eax);
|
1080
|
+
receiver.Unuse();
|
1081
|
+
} else {
|
1082
|
+
// All three registers are used, and no value is in the correct place.
|
1083
|
+
// We have one of the two circular permutations of eax, ecx, edx.
|
1084
|
+
ASSERT(value.is_register());
|
1085
|
+
if (value.reg().is(ecx)) {
|
1086
|
+
__ xchg(eax, edx);
|
1087
|
+
__ xchg(eax, ecx);
|
1088
|
+
} else {
|
1089
|
+
__ xchg(eax, ecx);
|
1090
|
+
__ xchg(eax, edx);
|
1091
|
+
}
|
1092
|
+
value.Unuse();
|
1093
|
+
key.Unuse();
|
1094
|
+
receiver.Unuse();
|
1095
|
+
}
|
1096
|
+
|
1097
|
+
Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Initialize));
|
941
1098
|
return RawCallCodeObject(ic, RelocInfo::CODE_TARGET);
|
942
1099
|
}
|
943
1100
|
|
@@ -1010,6 +1167,15 @@ Result VirtualFrame::Pop() {
|
|
1010
1167
|
FrameElement element = elements_.RemoveLast();
|
1011
1168
|
int index = element_count();
|
1012
1169
|
ASSERT(element.is_valid());
|
1170
|
+
ASSERT(element.is_untagged_int32() == cgen()->in_safe_int32_mode());
|
1171
|
+
|
1172
|
+
// Get number type information of the result.
|
1173
|
+
TypeInfo info;
|
1174
|
+
if (!element.is_copy()) {
|
1175
|
+
info = element.type_info();
|
1176
|
+
} else {
|
1177
|
+
info = elements_[element.index()].type_info();
|
1178
|
+
}
|
1013
1179
|
|
1014
1180
|
bool pop_needed = (stack_pointer_ == index);
|
1015
1181
|
if (pop_needed) {
|
@@ -1018,6 +1184,8 @@ Result VirtualFrame::Pop() {
|
|
1018
1184
|
Result temp = cgen()->allocator()->Allocate();
|
1019
1185
|
ASSERT(temp.is_valid());
|
1020
1186
|
__ pop(temp.reg());
|
1187
|
+
temp.set_type_info(info);
|
1188
|
+
temp.set_untagged_int32(element.is_untagged_int32());
|
1021
1189
|
return temp;
|
1022
1190
|
}
|
1023
1191
|
|
@@ -1030,6 +1198,7 @@ Result VirtualFrame::Pop() {
|
|
1030
1198
|
if (element.is_register()) {
|
1031
1199
|
Unuse(element.reg());
|
1032
1200
|
} else if (element.is_copy()) {
|
1201
|
+
ASSERT(!element.is_untagged_int32());
|
1033
1202
|
ASSERT(element.index() < index);
|
1034
1203
|
index = element.index();
|
1035
1204
|
element = elements_[index];
|
@@ -1041,21 +1210,28 @@ Result VirtualFrame::Pop() {
|
|
1041
1210
|
// Memory elements could only be the backing store of a copy.
|
1042
1211
|
// Allocate the original to a register.
|
1043
1212
|
ASSERT(index <= stack_pointer_);
|
1213
|
+
ASSERT(!element.is_untagged_int32());
|
1044
1214
|
Result temp = cgen()->allocator()->Allocate();
|
1045
1215
|
ASSERT(temp.is_valid());
|
1046
1216
|
Use(temp.reg(), index);
|
1047
1217
|
FrameElement new_element =
|
1048
|
-
FrameElement::RegisterElement(temp.reg(),
|
1218
|
+
FrameElement::RegisterElement(temp.reg(),
|
1219
|
+
FrameElement::SYNCED,
|
1220
|
+
element.type_info());
|
1049
1221
|
// Preserve the copy flag on the element.
|
1050
1222
|
if (element.is_copied()) new_element.set_copied();
|
1051
1223
|
elements_[index] = new_element;
|
1052
1224
|
__ mov(temp.reg(), Operand(ebp, fp_relative(index)));
|
1053
|
-
return Result(temp.reg());
|
1225
|
+
return Result(temp.reg(), info);
|
1054
1226
|
} else if (element.is_register()) {
|
1055
|
-
|
1227
|
+
Result return_value(element.reg(), info);
|
1228
|
+
return_value.set_untagged_int32(element.is_untagged_int32());
|
1229
|
+
return return_value;
|
1056
1230
|
} else {
|
1057
1231
|
ASSERT(element.is_constant());
|
1058
|
-
|
1232
|
+
Result return_value(element.handle());
|
1233
|
+
return_value.set_untagged_int32(element.is_untagged_int32());
|
1234
|
+
return return_value;
|
1059
1235
|
}
|
1060
1236
|
}
|
1061
1237
|
|
@@ -1076,30 +1252,61 @@ void VirtualFrame::EmitPop(Operand operand) {
|
|
1076
1252
|
}
|
1077
1253
|
|
1078
1254
|
|
1079
|
-
void VirtualFrame::EmitPush(Register reg) {
|
1255
|
+
void VirtualFrame::EmitPush(Register reg, TypeInfo info) {
|
1080
1256
|
ASSERT(stack_pointer_ == element_count() - 1);
|
1081
|
-
elements_.Add(FrameElement::MemoryElement());
|
1257
|
+
elements_.Add(FrameElement::MemoryElement(info));
|
1082
1258
|
stack_pointer_++;
|
1083
1259
|
__ push(reg);
|
1084
1260
|
}
|
1085
1261
|
|
1086
1262
|
|
1087
|
-
void VirtualFrame::EmitPush(Operand operand) {
|
1263
|
+
void VirtualFrame::EmitPush(Operand operand, TypeInfo info) {
|
1088
1264
|
ASSERT(stack_pointer_ == element_count() - 1);
|
1089
|
-
elements_.Add(FrameElement::MemoryElement());
|
1265
|
+
elements_.Add(FrameElement::MemoryElement(info));
|
1090
1266
|
stack_pointer_++;
|
1091
1267
|
__ push(operand);
|
1092
1268
|
}
|
1093
1269
|
|
1094
1270
|
|
1095
|
-
void VirtualFrame::EmitPush(Immediate immediate) {
|
1271
|
+
void VirtualFrame::EmitPush(Immediate immediate, TypeInfo info) {
|
1096
1272
|
ASSERT(stack_pointer_ == element_count() - 1);
|
1097
|
-
elements_.Add(FrameElement::MemoryElement());
|
1273
|
+
elements_.Add(FrameElement::MemoryElement(info));
|
1098
1274
|
stack_pointer_++;
|
1099
1275
|
__ push(immediate);
|
1100
1276
|
}
|
1101
1277
|
|
1102
1278
|
|
1279
|
+
void VirtualFrame::PushUntaggedElement(Handle<Object> value) {
|
1280
|
+
elements_.Add(FrameElement::ConstantElement(value, FrameElement::NOT_SYNCED));
|
1281
|
+
elements_[element_count() - 1].set_untagged_int32(true);
|
1282
|
+
}
|
1283
|
+
|
1284
|
+
|
1285
|
+
void VirtualFrame::Push(Expression* expr) {
|
1286
|
+
ASSERT(expr->IsTrivial());
|
1287
|
+
|
1288
|
+
Literal* lit = expr->AsLiteral();
|
1289
|
+
if (lit != NULL) {
|
1290
|
+
Push(lit->handle());
|
1291
|
+
return;
|
1292
|
+
}
|
1293
|
+
|
1294
|
+
VariableProxy* proxy = expr->AsVariableProxy();
|
1295
|
+
if (proxy != NULL) {
|
1296
|
+
Slot* slot = proxy->var()->slot();
|
1297
|
+
if (slot->type() == Slot::LOCAL) {
|
1298
|
+
PushLocalAt(slot->index());
|
1299
|
+
return;
|
1300
|
+
}
|
1301
|
+
if (slot->type() == Slot::PARAMETER) {
|
1302
|
+
PushParameterAt(slot->index());
|
1303
|
+
return;
|
1304
|
+
}
|
1305
|
+
}
|
1306
|
+
UNREACHABLE();
|
1307
|
+
}
|
1308
|
+
|
1309
|
+
|
1103
1310
|
#undef __
|
1104
1311
|
|
1105
1312
|
} } // namespace v8::internal
|