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
File without changes
|
@@ -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:
|
@@ -68,7 +68,7 @@ static void Generate_DebugBreakCallHelper(MacroAssembler* masm,
|
|
68
68
|
__ xor_(rax, rax); // No arguments (argc == 0).
|
69
69
|
__ movq(rbx, ExternalReference::debug_break());
|
70
70
|
|
71
|
-
|
71
|
+
CEntryStub ceb(1, ExitFrame::MODE_DEBUG);
|
72
72
|
__ CallStub(&ceb);
|
73
73
|
|
74
74
|
// Restore the register values containing object pointers from the expression
|
@@ -158,12 +158,13 @@ void Debug::GenerateReturnDebugBreak(MacroAssembler* masm) {
|
|
158
158
|
|
159
159
|
|
160
160
|
void Debug::GenerateStoreICDebugBreak(MacroAssembler* masm) {
|
161
|
-
//
|
161
|
+
// Register state for IC store call (from ic-x64.cc).
|
162
162
|
// ----------- S t a t e -------------
|
163
163
|
// -- rax : value
|
164
164
|
// -- rcx : name
|
165
|
+
// -- rdx : receiver
|
165
166
|
// -----------------------------------
|
166
|
-
Generate_DebugBreakCallHelper(masm, rax.bit() | rcx.bit(), false);
|
167
|
+
Generate_DebugBreakCallHelper(masm, rax.bit() | rcx.bit() | rdx.bit(), false);
|
167
168
|
}
|
168
169
|
|
169
170
|
|
@@ -176,9 +177,24 @@ void Debug::GenerateStubNoRegistersDebugBreak(MacroAssembler* masm) {
|
|
176
177
|
}
|
177
178
|
|
178
179
|
|
180
|
+
void Debug::GeneratePlainReturnLiveEdit(MacroAssembler* masm) {
|
181
|
+
masm->Abort("LiveEdit frame dropping is not supported on x64");
|
182
|
+
}
|
183
|
+
|
184
|
+
void Debug::GenerateFrameDropperLiveEdit(MacroAssembler* masm) {
|
185
|
+
masm->Abort("LiveEdit frame dropping is not supported on x64");
|
186
|
+
}
|
187
|
+
|
179
188
|
#undef __
|
180
189
|
|
181
190
|
|
191
|
+
void Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
|
192
|
+
Handle<Code> code) {
|
193
|
+
UNREACHABLE();
|
194
|
+
}
|
195
|
+
const int Debug::kFrameDropperFrameSize = -1;
|
196
|
+
|
197
|
+
|
182
198
|
void BreakLocationIterator::ClearDebugBreakAtReturn() {
|
183
199
|
rinfo()->PatchCode(original_rinfo()->pc(),
|
184
200
|
Assembler::kJSReturnSequenceLength);
|
@@ -114,6 +114,10 @@ static ByteMnemonic zero_operands_instr[] = {
|
|
114
114
|
{ 0x9E, UNSET_OP_ORDER, "sahf" },
|
115
115
|
{ 0x99, UNSET_OP_ORDER, "cdq" },
|
116
116
|
{ 0x9B, UNSET_OP_ORDER, "fwait" },
|
117
|
+
{ 0xA4, UNSET_OP_ORDER, "movs" },
|
118
|
+
{ 0xA5, UNSET_OP_ORDER, "movs" },
|
119
|
+
{ 0xA6, UNSET_OP_ORDER, "cmps" },
|
120
|
+
{ 0xA7, UNSET_OP_ORDER, "cmps" },
|
117
121
|
{ -1, UNSET_OP_ORDER, "" }
|
118
122
|
};
|
119
123
|
|
@@ -157,6 +161,16 @@ enum InstructionType {
|
|
157
161
|
};
|
158
162
|
|
159
163
|
|
164
|
+
enum Prefixes {
|
165
|
+
ESCAPE_PREFIX = 0x0F,
|
166
|
+
OPERAND_SIZE_OVERRIDE_PREFIX = 0x66,
|
167
|
+
ADDRESS_SIZE_OVERRIDE_PREFIX = 0x67,
|
168
|
+
REPNE_PREFIX = 0xF2,
|
169
|
+
REP_PREFIX = 0xF3,
|
170
|
+
REPEQ_PREFIX = REP_PREFIX
|
171
|
+
};
|
172
|
+
|
173
|
+
|
160
174
|
struct InstructionDesc {
|
161
175
|
const char* mnem;
|
162
176
|
InstructionType type;
|
@@ -979,7 +993,94 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
|
|
979
993
|
byte* current = data + 2;
|
980
994
|
// At return, "current" points to the start of the next instruction.
|
981
995
|
const char* mnemonic = TwoByteMnemonic(opcode);
|
982
|
-
if (
|
996
|
+
if (operand_size_ == 0x66) {
|
997
|
+
// 0x66 0x0F prefix.
|
998
|
+
int mod, regop, rm;
|
999
|
+
if (opcode == 0x3A) {
|
1000
|
+
byte third_byte = *current;
|
1001
|
+
current = data + 3;
|
1002
|
+
if (third_byte == 0x17) {
|
1003
|
+
get_modrm(*current, &mod, ®op, &rm);
|
1004
|
+
AppendToBuffer("extractps "); // reg/m32, xmm, imm8
|
1005
|
+
current += PrintRightOperand(current);
|
1006
|
+
AppendToBuffer(", %s, %d", NameOfCPURegister(regop), (*current) & 3);
|
1007
|
+
current += 1;
|
1008
|
+
} else {
|
1009
|
+
UnimplementedInstruction();
|
1010
|
+
}
|
1011
|
+
} else {
|
1012
|
+
get_modrm(*current, &mod, ®op, &rm);
|
1013
|
+
if (opcode == 0x6E) {
|
1014
|
+
AppendToBuffer("mov%c %s,",
|
1015
|
+
rex_w() ? 'q' : 'd',
|
1016
|
+
NameOfXMMRegister(regop));
|
1017
|
+
current += PrintRightOperand(current);
|
1018
|
+
} else if (opcode == 0x7E) {
|
1019
|
+
AppendToBuffer("mov%c %s,",
|
1020
|
+
rex_w() ? 'q' : 'd',
|
1021
|
+
NameOfCPURegister(regop));
|
1022
|
+
current += PrintRightXMMOperand(current);
|
1023
|
+
} else {
|
1024
|
+
const char* mnemonic = "?";
|
1025
|
+
if (opcode == 0x57) {
|
1026
|
+
mnemonic = "xorpd";
|
1027
|
+
} else if (opcode == 0x2E) {
|
1028
|
+
mnemonic = "comisd";
|
1029
|
+
} else if (opcode == 0x2F) {
|
1030
|
+
mnemonic = "ucomisd";
|
1031
|
+
} else {
|
1032
|
+
UnimplementedInstruction();
|
1033
|
+
}
|
1034
|
+
AppendToBuffer("%s %s,", mnemonic, NameOfXMMRegister(regop));
|
1035
|
+
current += PrintRightXMMOperand(current);
|
1036
|
+
}
|
1037
|
+
}
|
1038
|
+
} else if (group_1_prefix_ == 0xF2) {
|
1039
|
+
// Beginning of instructions with prefix 0xF2.
|
1040
|
+
|
1041
|
+
if (opcode == 0x11 || opcode == 0x10) {
|
1042
|
+
// MOVSD: Move scalar double-precision fp to/from/between XMM registers.
|
1043
|
+
AppendToBuffer("movsd ");
|
1044
|
+
int mod, regop, rm;
|
1045
|
+
get_modrm(*current, &mod, ®op, &rm);
|
1046
|
+
if (opcode == 0x11) {
|
1047
|
+
current += PrintRightOperand(current);
|
1048
|
+
AppendToBuffer(",%s", NameOfXMMRegister(regop));
|
1049
|
+
} else {
|
1050
|
+
AppendToBuffer("%s,", NameOfXMMRegister(regop));
|
1051
|
+
current += PrintRightOperand(current);
|
1052
|
+
}
|
1053
|
+
} else if (opcode == 0x2A) {
|
1054
|
+
// CVTSI2SD: integer to XMM double conversion.
|
1055
|
+
int mod, regop, rm;
|
1056
|
+
get_modrm(*current, &mod, ®op, &rm);
|
1057
|
+
AppendToBuffer("%s %s,", mnemonic, NameOfXMMRegister(regop));
|
1058
|
+
current += PrintRightOperand(current);
|
1059
|
+
} else if ((opcode & 0xF8) == 0x58 || opcode == 0x51) {
|
1060
|
+
// XMM arithmetic. Mnemonic was retrieved at the start of this function.
|
1061
|
+
int mod, regop, rm;
|
1062
|
+
get_modrm(*current, &mod, ®op, &rm);
|
1063
|
+
AppendToBuffer("%s %s,", mnemonic, NameOfXMMRegister(regop));
|
1064
|
+
current += PrintRightXMMOperand(current);
|
1065
|
+
} else {
|
1066
|
+
UnimplementedInstruction();
|
1067
|
+
}
|
1068
|
+
} else if (group_1_prefix_ == 0xF3) {
|
1069
|
+
// Instructions with prefix 0xF3.
|
1070
|
+
if (opcode == 0x2C) {
|
1071
|
+
// CVTTSS2SI: Convert scalar single-precision FP to dword integer.
|
1072
|
+
// Assert that mod is not 3, so source is memory, not an XMM register.
|
1073
|
+
ASSERT_NE(0xC0, *current & 0xC0);
|
1074
|
+
current += PrintOperands("cvttss2si", REG_OPER_OP_ORDER, current);
|
1075
|
+
} else if (opcode == 0x5A) {
|
1076
|
+
int mod, regop, rm;
|
1077
|
+
get_modrm(*current, &mod, ®op, &rm);
|
1078
|
+
AppendToBuffer("cvtss2sd %s,", NameOfXMMRegister(regop));
|
1079
|
+
current += PrintRightXMMOperand(current);
|
1080
|
+
} else {
|
1081
|
+
UnimplementedInstruction();
|
1082
|
+
}
|
1083
|
+
} else if (opcode == 0x1F) {
|
983
1084
|
// NOP
|
984
1085
|
int mod, regop, rm;
|
985
1086
|
get_modrm(*current, &mod, ®op, &rm);
|
@@ -993,8 +1094,7 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
|
|
993
1094
|
current += 4;
|
994
1095
|
} // else no immediate displacement.
|
995
1096
|
AppendToBuffer("nop");
|
996
|
-
|
997
|
-
} else if (opcode == 0xA2 || opcode == 0x31) {
|
1097
|
+
} else if (opcode == 0xA2 || opcode == 0x31) {
|
998
1098
|
// RDTSC or CPUID
|
999
1099
|
AppendToBuffer("%s", mnemonic);
|
1000
1100
|
|
@@ -1029,43 +1129,6 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
|
|
1029
1129
|
} else {
|
1030
1130
|
AppendToBuffer(",%s,cl", NameOfCPURegister(regop));
|
1031
1131
|
}
|
1032
|
-
} else if (group_1_prefix_ == 0xF2) {
|
1033
|
-
// Beginning of instructions with prefix 0xF2.
|
1034
|
-
|
1035
|
-
if (opcode == 0x11 || opcode == 0x10) {
|
1036
|
-
// MOVSD: Move scalar double-precision fp to/from/between XMM registers.
|
1037
|
-
AppendToBuffer("movsd ");
|
1038
|
-
int mod, regop, rm;
|
1039
|
-
get_modrm(*current, &mod, ®op, &rm);
|
1040
|
-
if (opcode == 0x11) {
|
1041
|
-
current += PrintRightOperand(current);
|
1042
|
-
AppendToBuffer(",%s", NameOfXMMRegister(regop));
|
1043
|
-
} else {
|
1044
|
-
AppendToBuffer("%s,", NameOfXMMRegister(regop));
|
1045
|
-
current += PrintRightOperand(current);
|
1046
|
-
}
|
1047
|
-
} else if (opcode == 0x2A) {
|
1048
|
-
// CVTSI2SD: integer to XMM double conversion.
|
1049
|
-
int mod, regop, rm;
|
1050
|
-
get_modrm(*current, &mod, ®op, &rm);
|
1051
|
-
AppendToBuffer("%s %s,", mnemonic, NameOfXMMRegister(regop));
|
1052
|
-
current += PrintRightOperand(current);
|
1053
|
-
} else if ((opcode & 0xF8) == 0x58) {
|
1054
|
-
// XMM arithmetic. Mnemonic was retrieved at the start of this function.
|
1055
|
-
int mod, regop, rm;
|
1056
|
-
get_modrm(*current, &mod, ®op, &rm);
|
1057
|
-
AppendToBuffer("%s %s,", mnemonic, NameOfXMMRegister(regop));
|
1058
|
-
current += PrintRightXMMOperand(current);
|
1059
|
-
} else {
|
1060
|
-
UnimplementedInstruction();
|
1061
|
-
}
|
1062
|
-
} else if (opcode == 0x2C && group_1_prefix_ == 0xF3) {
|
1063
|
-
// Instruction with prefix 0xF3.
|
1064
|
-
|
1065
|
-
// CVTTSS2SI: Convert scalar single-precision FP to dword integer.
|
1066
|
-
// Assert that mod is not 3, so source is memory, not an XMM register.
|
1067
|
-
ASSERT_NE(0xC0, *current & 0xC0);
|
1068
|
-
current += PrintOperands("cvttss2si", REG_OPER_OP_ORDER, current);
|
1069
1132
|
} else {
|
1070
1133
|
UnimplementedInstruction();
|
1071
1134
|
}
|
@@ -1084,6 +1147,8 @@ const char* DisassemblerX64::TwoByteMnemonic(byte opcode) {
|
|
1084
1147
|
return "cvtsi2sd";
|
1085
1148
|
case 0x31:
|
1086
1149
|
return "rdtsc";
|
1150
|
+
case 0x51: // F2 prefix.
|
1151
|
+
return "sqrtsd";
|
1087
1152
|
case 0x58: // F2 prefix.
|
1088
1153
|
return "addsd";
|
1089
1154
|
case 0x59: // F2 prefix.
|
@@ -1128,12 +1193,12 @@ int DisassemblerX64::InstructionDecode(v8::internal::Vector<char> out_buffer,
|
|
1128
1193
|
// Scan for prefixes.
|
1129
1194
|
while (true) {
|
1130
1195
|
current = *data;
|
1131
|
-
if (current ==
|
1196
|
+
if (current == OPERAND_SIZE_OVERRIDE_PREFIX) { // Group 3 prefix.
|
1132
1197
|
operand_size_ = current;
|
1133
1198
|
} else if ((current & 0xF0) == 0x40) { // REX prefix.
|
1134
1199
|
setRex(current);
|
1135
1200
|
if (rex_w()) AppendToBuffer("REX.W ");
|
1136
|
-
} else if ((current & 0xFE) == 0xF2) { // Group 1 prefix.
|
1201
|
+
} else if ((current & 0xFE) == 0xF2) { // Group 1 prefix (0xF2 or 0xF3).
|
1137
1202
|
group_1_prefix_ = current;
|
1138
1203
|
} else { // Not a prefix - an opcode.
|
1139
1204
|
break;
|
@@ -1145,7 +1210,17 @@ int DisassemblerX64::InstructionDecode(v8::internal::Vector<char> out_buffer,
|
|
1145
1210
|
byte_size_operand_ = idesc.byte_size_operation;
|
1146
1211
|
switch (idesc.type) {
|
1147
1212
|
case ZERO_OPERANDS_INSTR:
|
1148
|
-
|
1213
|
+
if (current >= 0xA4 && current <= 0xA7) {
|
1214
|
+
// String move or compare operations.
|
1215
|
+
if (group_1_prefix_ == REP_PREFIX) {
|
1216
|
+
// REP.
|
1217
|
+
AppendToBuffer("rep ");
|
1218
|
+
}
|
1219
|
+
if (rex_w()) AppendToBuffer("REX.W ");
|
1220
|
+
AppendToBuffer("%s%c", idesc.mnem, operand_size_code());
|
1221
|
+
} else {
|
1222
|
+
AppendToBuffer("%s", idesc.mnem, operand_size_code());
|
1223
|
+
}
|
1149
1224
|
data++;
|
1150
1225
|
break;
|
1151
1226
|
|
@@ -1234,7 +1309,9 @@ int DisassemblerX64::InstructionDecode(v8::internal::Vector<char> out_buffer,
|
|
1234
1309
|
get_modrm(*(data + 1), &mod, ®op, &rm);
|
1235
1310
|
int32_t imm = *data == 0x6B ? *(data + 2)
|
1236
1311
|
: *reinterpret_cast<int32_t*>(data + 2);
|
1237
|
-
AppendToBuffer("imul %s,%s,0x%x",
|
1312
|
+
AppendToBuffer("imul%c %s,%s,0x%x",
|
1313
|
+
operand_size_code(),
|
1314
|
+
NameOfCPURegister(regop),
|
1238
1315
|
NameOfCPURegister(rm), imm);
|
1239
1316
|
data += 2 + (*data == 0x6B ? 1 : 4);
|
1240
1317
|
break;
|
@@ -0,0 +1,246 @@
|
|
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
|
+
#include "v8.h"
|
29
|
+
|
30
|
+
#include "codegen-inl.h"
|
31
|
+
#include "fast-codegen.h"
|
32
|
+
#include "scopes.h"
|
33
|
+
|
34
|
+
namespace v8 {
|
35
|
+
namespace internal {
|
36
|
+
|
37
|
+
#define __ ACCESS_MASM(masm())
|
38
|
+
|
39
|
+
Register FastCodeGenerator::accumulator0() { return rax; }
|
40
|
+
Register FastCodeGenerator::accumulator1() { return rdx; }
|
41
|
+
Register FastCodeGenerator::scratch0() { return rcx; }
|
42
|
+
Register FastCodeGenerator::scratch1() { return rdi; }
|
43
|
+
Register FastCodeGenerator::receiver_reg() { return rbx; }
|
44
|
+
Register FastCodeGenerator::context_reg() { return rsi; }
|
45
|
+
|
46
|
+
|
47
|
+
void FastCodeGenerator::EmitLoadReceiver() {
|
48
|
+
// Offset 2 is due to return address and saved frame pointer.
|
49
|
+
int index = 2 + scope()->num_parameters();
|
50
|
+
__ movq(receiver_reg(), Operand(rbp, index * kPointerSize));
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
void FastCodeGenerator::EmitGlobalVariableLoad(Handle<Object> cell) {
|
55
|
+
ASSERT(!destination().is(no_reg));
|
56
|
+
ASSERT(cell->IsJSGlobalPropertyCell());
|
57
|
+
|
58
|
+
__ Move(destination(), cell);
|
59
|
+
__ movq(destination(),
|
60
|
+
FieldOperand(destination(), JSGlobalPropertyCell::kValueOffset));
|
61
|
+
if (FLAG_debug_code) {
|
62
|
+
__ Cmp(destination(), Factory::the_hole_value());
|
63
|
+
__ Check(not_equal, "DontDelete cells can't contain the hole");
|
64
|
+
}
|
65
|
+
|
66
|
+
// The loaded value is not known to be a smi.
|
67
|
+
clear_as_smi(destination());
|
68
|
+
}
|
69
|
+
|
70
|
+
|
71
|
+
void FastCodeGenerator::EmitThisPropertyStore(Handle<String> name) {
|
72
|
+
LookupResult lookup;
|
73
|
+
info()->receiver()->Lookup(*name, &lookup);
|
74
|
+
|
75
|
+
ASSERT(lookup.holder() == *info()->receiver());
|
76
|
+
ASSERT(lookup.type() == FIELD);
|
77
|
+
Handle<Map> map(Handle<HeapObject>::cast(info()->receiver())->map());
|
78
|
+
int index = lookup.GetFieldIndex() - map->inobject_properties();
|
79
|
+
int offset = index * kPointerSize;
|
80
|
+
|
81
|
+
// We will emit the write barrier unless the stored value is statically
|
82
|
+
// known to be a smi.
|
83
|
+
bool needs_write_barrier = !is_smi(accumulator0());
|
84
|
+
|
85
|
+
// Perform the store. Negative offsets are inobject properties.
|
86
|
+
if (offset < 0) {
|
87
|
+
offset += map->instance_size();
|
88
|
+
__ movq(FieldOperand(receiver_reg(), offset), accumulator0());
|
89
|
+
if (needs_write_barrier) {
|
90
|
+
// Preserve receiver from write barrier.
|
91
|
+
__ movq(scratch0(), receiver_reg());
|
92
|
+
}
|
93
|
+
} else {
|
94
|
+
offset += FixedArray::kHeaderSize;
|
95
|
+
__ movq(scratch0(),
|
96
|
+
FieldOperand(receiver_reg(), JSObject::kPropertiesOffset));
|
97
|
+
__ movq(FieldOperand(scratch0(), offset), accumulator0());
|
98
|
+
}
|
99
|
+
|
100
|
+
if (needs_write_barrier) {
|
101
|
+
if (destination().is(no_reg)) {
|
102
|
+
// After RecordWrite accumulator0 is only accidently a smi, but it is
|
103
|
+
// already marked as not known to be one.
|
104
|
+
__ RecordWrite(scratch0(), offset, accumulator0(), scratch1());
|
105
|
+
} else {
|
106
|
+
// Copy the value to the other accumulator to preserve a copy from the
|
107
|
+
// write barrier. One of the accumulators is available as a scratch
|
108
|
+
// register. Neither is a smi.
|
109
|
+
__ movq(accumulator1(), accumulator0());
|
110
|
+
clear_as_smi(accumulator1());
|
111
|
+
Register value_scratch = other_accumulator(destination());
|
112
|
+
__ RecordWrite(scratch0(), offset, value_scratch, scratch1());
|
113
|
+
}
|
114
|
+
} else if (destination().is(accumulator1())) {
|
115
|
+
__ movq(accumulator1(), accumulator0());
|
116
|
+
// Is a smi because we do not need the write barrier.
|
117
|
+
set_as_smi(accumulator1());
|
118
|
+
}
|
119
|
+
}
|
120
|
+
|
121
|
+
|
122
|
+
void FastCodeGenerator::EmitThisPropertyLoad(Handle<String> name) {
|
123
|
+
ASSERT(!destination().is(no_reg));
|
124
|
+
LookupResult lookup;
|
125
|
+
info()->receiver()->Lookup(*name, &lookup);
|
126
|
+
|
127
|
+
ASSERT(lookup.holder() == *info()->receiver());
|
128
|
+
ASSERT(lookup.type() == FIELD);
|
129
|
+
Handle<Map> map(Handle<HeapObject>::cast(info()->receiver())->map());
|
130
|
+
int index = lookup.GetFieldIndex() - map->inobject_properties();
|
131
|
+
int offset = index * kPointerSize;
|
132
|
+
|
133
|
+
// Perform the load. Negative offsets are inobject properties.
|
134
|
+
if (offset < 0) {
|
135
|
+
offset += map->instance_size();
|
136
|
+
__ movq(destination(), FieldOperand(receiver_reg(), offset));
|
137
|
+
} else {
|
138
|
+
offset += FixedArray::kHeaderSize;
|
139
|
+
__ movq(scratch0(),
|
140
|
+
FieldOperand(receiver_reg(), JSObject::kPropertiesOffset));
|
141
|
+
__ movq(destination(), FieldOperand(scratch0(), offset));
|
142
|
+
}
|
143
|
+
|
144
|
+
// The loaded value is not known to be a smi.
|
145
|
+
clear_as_smi(destination());
|
146
|
+
}
|
147
|
+
|
148
|
+
|
149
|
+
void FastCodeGenerator::EmitBitOr() {
|
150
|
+
if (is_smi(accumulator0()) && is_smi(accumulator1())) {
|
151
|
+
// If both operands are known to be a smi then there is no need to check
|
152
|
+
// the operands or result.
|
153
|
+
if (destination().is(no_reg)) {
|
154
|
+
__ or_(accumulator1(), accumulator0());
|
155
|
+
} else {
|
156
|
+
// Leave the result in the destination register. Bitwise or is
|
157
|
+
// commutative.
|
158
|
+
__ or_(destination(), other_accumulator(destination()));
|
159
|
+
}
|
160
|
+
} else {
|
161
|
+
// Left is in accumulator1, right in accumulator0.
|
162
|
+
if (destination().is(accumulator0())) {
|
163
|
+
__ movq(scratch0(), accumulator0());
|
164
|
+
__ or_(destination(), accumulator1()); // Or is commutative.
|
165
|
+
Label* bailout =
|
166
|
+
info()->AddBailout(accumulator1(), scratch0()); // Left, right.
|
167
|
+
__ JumpIfNotSmi(destination(), bailout);
|
168
|
+
} else if (destination().is(accumulator1())) {
|
169
|
+
__ movq(scratch0(), accumulator1());
|
170
|
+
__ or_(destination(), accumulator0());
|
171
|
+
Label* bailout = info()->AddBailout(scratch0(), accumulator0());
|
172
|
+
__ JumpIfNotSmi(destination(), bailout);
|
173
|
+
} else {
|
174
|
+
ASSERT(destination().is(no_reg));
|
175
|
+
__ movq(scratch0(), accumulator1());
|
176
|
+
__ or_(scratch0(), accumulator0());
|
177
|
+
Label* bailout = info()->AddBailout(accumulator1(), accumulator0());
|
178
|
+
__ JumpIfNotSmi(scratch0(), bailout);
|
179
|
+
}
|
180
|
+
}
|
181
|
+
|
182
|
+
// If we didn't bailout, the result (in fact, both inputs too) is known to
|
183
|
+
// be a smi.
|
184
|
+
set_as_smi(accumulator0());
|
185
|
+
set_as_smi(accumulator1());
|
186
|
+
}
|
187
|
+
|
188
|
+
|
189
|
+
void FastCodeGenerator::Generate(CompilationInfo* compilation_info) {
|
190
|
+
ASSERT(info_ == NULL);
|
191
|
+
info_ = compilation_info;
|
192
|
+
Comment cmnt(masm_, "[ function compiled by fast code generator");
|
193
|
+
|
194
|
+
// Save the caller's frame pointer and set up our own.
|
195
|
+
Comment prologue_cmnt(masm(), ";; Prologue");
|
196
|
+
__ push(rbp);
|
197
|
+
__ movq(rbp, rsp);
|
198
|
+
__ push(rsi); // Context.
|
199
|
+
__ push(rdi); // Closure.
|
200
|
+
// Note that we keep a live register reference to esi (context) at this
|
201
|
+
// point.
|
202
|
+
|
203
|
+
Label* bailout_to_beginning = info()->AddBailout();
|
204
|
+
// Receiver (this) is allocated to a fixed register.
|
205
|
+
if (info()->has_this_properties()) {
|
206
|
+
Comment cmnt(masm(), ";; MapCheck(this)");
|
207
|
+
if (FLAG_print_ir) {
|
208
|
+
PrintF("MapCheck(this)\n");
|
209
|
+
}
|
210
|
+
ASSERT(info()->has_receiver() && info()->receiver()->IsHeapObject());
|
211
|
+
Handle<HeapObject> object = Handle<HeapObject>::cast(info()->receiver());
|
212
|
+
Handle<Map> map(object->map());
|
213
|
+
EmitLoadReceiver();
|
214
|
+
__ CheckMap(receiver_reg(), map, bailout_to_beginning, false);
|
215
|
+
}
|
216
|
+
|
217
|
+
// If there is a global variable access check if the global object is the
|
218
|
+
// same as at lazy-compilation time.
|
219
|
+
if (info()->has_globals()) {
|
220
|
+
Comment cmnt(masm(), ";; MapCheck(GLOBAL)");
|
221
|
+
if (FLAG_print_ir) {
|
222
|
+
PrintF("MapCheck(GLOBAL)\n");
|
223
|
+
}
|
224
|
+
ASSERT(info()->has_global_object());
|
225
|
+
Handle<Map> map(info()->global_object()->map());
|
226
|
+
__ movq(scratch0(), CodeGenerator::GlobalObject());
|
227
|
+
__ CheckMap(scratch0(), map, bailout_to_beginning, true);
|
228
|
+
}
|
229
|
+
|
230
|
+
VisitStatements(info()->function()->body());
|
231
|
+
|
232
|
+
Comment return_cmnt(masm(), ";; Return(<undefined>)");
|
233
|
+
if (FLAG_print_ir) {
|
234
|
+
PrintF("Return(<undefined>)\n");
|
235
|
+
}
|
236
|
+
__ LoadRoot(rax, Heap::kUndefinedValueRootIndex);
|
237
|
+
__ movq(rsp, rbp);
|
238
|
+
__ pop(rbp);
|
239
|
+
__ ret((scope()->num_parameters() + 1) * kPointerSize);
|
240
|
+
}
|
241
|
+
|
242
|
+
|
243
|
+
#undef __
|
244
|
+
|
245
|
+
|
246
|
+
} } // namespace v8::internal
|