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
@@ -41,40 +41,46 @@ namespace internal {
|
|
41
41
|
|
42
42
|
MacroAssembler::MacroAssembler(void* buffer, int size)
|
43
43
|
: Assembler(buffer, size),
|
44
|
-
unresolved_(0),
|
45
44
|
generating_stub_(false),
|
46
45
|
allow_stub_calls_(true),
|
47
46
|
code_object_(Heap::undefined_value()) {
|
48
47
|
}
|
49
48
|
|
50
49
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
50
|
+
void MacroAssembler::RecordWriteHelper(Register object,
|
51
|
+
Register addr,
|
52
|
+
Register scratch) {
|
53
|
+
if (FLAG_debug_code) {
|
54
|
+
// Check that the object is not in new space.
|
55
|
+
Label not_in_new_space;
|
56
|
+
InNewSpace(object, scratch, not_equal, ¬_in_new_space);
|
57
|
+
Abort("new-space object passed to RecordWriteHelper");
|
58
|
+
bind(¬_in_new_space);
|
59
|
+
}
|
60
|
+
|
55
61
|
Label fast;
|
56
62
|
|
57
63
|
// Compute the page start address from the heap object pointer, and reuse
|
58
64
|
// the 'object' register for it.
|
59
|
-
|
65
|
+
and_(object, ~Page::kPageAlignmentMask);
|
60
66
|
Register page_start = object;
|
61
67
|
|
62
68
|
// Compute the bit addr in the remembered set/index of the pointer in the
|
63
69
|
// page. Reuse 'addr' as pointer_offset.
|
64
|
-
|
65
|
-
|
70
|
+
sub(addr, Operand(page_start));
|
71
|
+
shr(addr, kObjectAlignmentBits);
|
66
72
|
Register pointer_offset = addr;
|
67
73
|
|
68
74
|
// If the bit offset lies beyond the normal remembered set range, it is in
|
69
75
|
// the extra remembered set area of a large object.
|
70
|
-
|
71
|
-
|
76
|
+
cmp(pointer_offset, Page::kPageSize / kPointerSize);
|
77
|
+
j(less, &fast);
|
72
78
|
|
73
79
|
// Adjust 'page_start' so that addressing using 'pointer_offset' hits the
|
74
80
|
// extra remembered set after the large object.
|
75
81
|
|
76
82
|
// Find the length of the large object (FixedArray).
|
77
|
-
|
83
|
+
mov(scratch, Operand(page_start, Page::kObjectStartOffset
|
78
84
|
+ FixedArray::kLengthOffset));
|
79
85
|
Register array_length = scratch;
|
80
86
|
|
@@ -84,59 +90,41 @@ static void RecordWriteHelper(MacroAssembler* masm,
|
|
84
90
|
// Add the delta between the end of the normal RSet and the start of the
|
85
91
|
// extra RSet to 'page_start', so that addressing the bit using
|
86
92
|
// 'pointer_offset' hits the extra RSet words.
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
93
|
+
lea(page_start,
|
94
|
+
Operand(page_start, array_length, times_pointer_size,
|
95
|
+
Page::kObjectStartOffset + FixedArray::kHeaderSize
|
96
|
+
- Page::kRSetEndOffset));
|
91
97
|
|
92
98
|
// NOTE: For now, we use the bit-test-and-set (bts) x86 instruction
|
93
99
|
// to limit code size. We should probably evaluate this decision by
|
94
100
|
// measuring the performance of an equivalent implementation using
|
95
101
|
// "simpler" instructions
|
96
|
-
|
97
|
-
|
102
|
+
bind(&fast);
|
103
|
+
bts(Operand(page_start, Page::kRSetOffset), pointer_offset);
|
98
104
|
}
|
99
105
|
|
100
106
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
// scratch) OOOOAAAASSSS.
|
122
|
-
class ScratchBits: public BitField<uint32_t, 0, 4> {};
|
123
|
-
class AddressBits: public BitField<uint32_t, 4, 4> {};
|
124
|
-
class ObjectBits: public BitField<uint32_t, 8, 4> {};
|
125
|
-
|
126
|
-
Major MajorKey() { return RecordWrite; }
|
127
|
-
|
128
|
-
int MinorKey() {
|
129
|
-
// Encode the registers.
|
130
|
-
return ObjectBits::encode(object_.code()) |
|
131
|
-
AddressBits::encode(addr_.code()) |
|
132
|
-
ScratchBits::encode(scratch_.code());
|
107
|
+
void MacroAssembler::InNewSpace(Register object,
|
108
|
+
Register scratch,
|
109
|
+
Condition cc,
|
110
|
+
Label* branch) {
|
111
|
+
ASSERT(cc == equal || cc == not_equal);
|
112
|
+
if (Serializer::enabled()) {
|
113
|
+
// Can't do arithmetic on external references if it might get serialized.
|
114
|
+
mov(scratch, Operand(object));
|
115
|
+
// The mask isn't really an address. We load it as an external reference in
|
116
|
+
// case the size of the new space is different between the snapshot maker
|
117
|
+
// and the running system.
|
118
|
+
and_(Operand(scratch), Immediate(ExternalReference::new_space_mask()));
|
119
|
+
cmp(Operand(scratch), Immediate(ExternalReference::new_space_start()));
|
120
|
+
j(cc, branch);
|
121
|
+
} else {
|
122
|
+
int32_t new_space_start = reinterpret_cast<int32_t>(
|
123
|
+
ExternalReference::new_space_start().address());
|
124
|
+
lea(scratch, Operand(object, -new_space_start));
|
125
|
+
and_(scratch, Heap::NewSpaceMask());
|
126
|
+
j(cc, branch);
|
133
127
|
}
|
134
|
-
};
|
135
|
-
|
136
|
-
|
137
|
-
void RecordWriteStub::Generate(MacroAssembler* masm) {
|
138
|
-
RecordWriteHelper(masm, object_, addr_, scratch_);
|
139
|
-
masm->ret(0);
|
140
128
|
}
|
141
129
|
|
142
130
|
|
@@ -147,9 +135,14 @@ void RecordWriteStub::Generate(MacroAssembler* masm) {
|
|
147
135
|
// All registers are clobbered by the operation.
|
148
136
|
void MacroAssembler::RecordWrite(Register object, int offset,
|
149
137
|
Register value, Register scratch) {
|
138
|
+
// The compiled code assumes that record write doesn't change the
|
139
|
+
// context register, so we check that none of the clobbered
|
140
|
+
// registers are esi.
|
141
|
+
ASSERT(!object.is(esi) && !value.is(esi) && !scratch.is(esi));
|
142
|
+
|
150
143
|
// First, check if a remembered set write is even needed. The tests below
|
151
144
|
// catch stores of Smis and stores into young gen (which does not have space
|
152
|
-
// for the remembered set bits.
|
145
|
+
// for the remembered set bits).
|
153
146
|
Label done;
|
154
147
|
|
155
148
|
// Skip barrier if writing a smi.
|
@@ -157,21 +150,19 @@ void MacroAssembler::RecordWrite(Register object, int offset,
|
|
157
150
|
test(value, Immediate(kSmiTagMask));
|
158
151
|
j(zero, &done);
|
159
152
|
|
160
|
-
|
161
|
-
// Can't do arithmetic on external references if it might get serialized.
|
162
|
-
mov(value, Operand(object));
|
163
|
-
and_(value, Heap::NewSpaceMask());
|
164
|
-
cmp(Operand(value), Immediate(ExternalReference::new_space_start()));
|
165
|
-
j(equal, &done);
|
166
|
-
} else {
|
167
|
-
int32_t new_space_start = reinterpret_cast<int32_t>(
|
168
|
-
ExternalReference::new_space_start().address());
|
169
|
-
lea(value, Operand(object, -new_space_start));
|
170
|
-
and_(value, Heap::NewSpaceMask());
|
171
|
-
j(equal, &done);
|
172
|
-
}
|
153
|
+
InNewSpace(object, value, equal, &done);
|
173
154
|
|
174
|
-
|
155
|
+
// The offset is relative to a tagged or untagged HeapObject pointer,
|
156
|
+
// so either offset or offset + kHeapObjectTag must be a
|
157
|
+
// multiple of kPointerSize.
|
158
|
+
ASSERT(IsAligned(offset, kPointerSize) ||
|
159
|
+
IsAligned(offset + kHeapObjectTag, kPointerSize));
|
160
|
+
|
161
|
+
// We use optimized write barrier code if the word being written to is not in
|
162
|
+
// a large object chunk or is in the first page of a large object chunk.
|
163
|
+
// We make sure that an offset is inside the right limits whether it is
|
164
|
+
// tagged or untagged.
|
165
|
+
if ((offset > 0) && (offset < Page::kMaxHeapObjectSize - kHeapObjectTag)) {
|
175
166
|
// Compute the bit offset in the remembered set, leave it in 'value'.
|
176
167
|
lea(value, Operand(object, offset));
|
177
168
|
and_(value, Page::kPageAlignmentMask);
|
@@ -202,7 +193,7 @@ void MacroAssembler::RecordWrite(Register object, int offset,
|
|
202
193
|
// If we are already generating a shared stub, not inlining the
|
203
194
|
// record write code isn't going to save us any memory.
|
204
195
|
if (generating_stub()) {
|
205
|
-
RecordWriteHelper(
|
196
|
+
RecordWriteHelper(object, dst, value);
|
206
197
|
} else {
|
207
198
|
RecordWriteStub stub(object, dst, value);
|
208
199
|
CallStub(&stub);
|
@@ -210,6 +201,14 @@ void MacroAssembler::RecordWrite(Register object, int offset,
|
|
210
201
|
}
|
211
202
|
|
212
203
|
bind(&done);
|
204
|
+
|
205
|
+
// Clobber all input registers when running with the debug-code flag
|
206
|
+
// turned on to provoke errors.
|
207
|
+
if (FLAG_debug_code) {
|
208
|
+
mov(object, Immediate(BitCast<int32_t>(kZapValue)));
|
209
|
+
mov(value, Immediate(BitCast<int32_t>(kZapValue)));
|
210
|
+
mov(scratch, Immediate(BitCast<int32_t>(kZapValue)));
|
211
|
+
}
|
213
212
|
}
|
214
213
|
|
215
214
|
|
@@ -295,6 +294,13 @@ void MacroAssembler::CopyRegistersFromStackToMemory(Register base,
|
|
295
294
|
}
|
296
295
|
}
|
297
296
|
}
|
297
|
+
|
298
|
+
void MacroAssembler::DebugBreak() {
|
299
|
+
Set(eax, Immediate(0));
|
300
|
+
mov(ebx, Immediate(ExternalReference(Runtime::kDebugBreak)));
|
301
|
+
CEntryStub ces(1);
|
302
|
+
call(ces.GetCode(), RelocInfo::DEBUG_BREAK);
|
303
|
+
}
|
298
304
|
#endif
|
299
305
|
|
300
306
|
void MacroAssembler::Set(Register dst, const Immediate& x) {
|
@@ -325,6 +331,19 @@ void MacroAssembler::CmpInstanceType(Register map, InstanceType type) {
|
|
325
331
|
}
|
326
332
|
|
327
333
|
|
334
|
+
void MacroAssembler::CheckMap(Register obj,
|
335
|
+
Handle<Map> map,
|
336
|
+
Label* fail,
|
337
|
+
bool is_heap_object) {
|
338
|
+
if (!is_heap_object) {
|
339
|
+
test(obj, Immediate(kSmiTagMask));
|
340
|
+
j(zero, fail);
|
341
|
+
}
|
342
|
+
cmp(FieldOperand(obj, HeapObject::kMapOffset), Immediate(map));
|
343
|
+
j(not_equal, fail);
|
344
|
+
}
|
345
|
+
|
346
|
+
|
328
347
|
Condition MacroAssembler::IsObjectStringType(Register heap_object,
|
329
348
|
Register map,
|
330
349
|
Register instance_type) {
|
@@ -351,6 +370,23 @@ void MacroAssembler::FCmp() {
|
|
351
370
|
}
|
352
371
|
|
353
372
|
|
373
|
+
void MacroAssembler::AbortIfNotNumber(Register object) {
|
374
|
+
Label ok;
|
375
|
+
test(object, Immediate(kSmiTagMask));
|
376
|
+
j(zero, &ok);
|
377
|
+
cmp(FieldOperand(object, HeapObject::kMapOffset),
|
378
|
+
Factory::heap_number_map());
|
379
|
+
Assert(equal, "Operand not a number");
|
380
|
+
bind(&ok);
|
381
|
+
}
|
382
|
+
|
383
|
+
|
384
|
+
void MacroAssembler::AbortIfNotSmi(Register object) {
|
385
|
+
test(object, Immediate(kSmiTagMask));
|
386
|
+
Assert(equal, "Operand not a smi");
|
387
|
+
}
|
388
|
+
|
389
|
+
|
354
390
|
void MacroAssembler::EnterFrame(StackFrame::Type type) {
|
355
391
|
push(ebp);
|
356
392
|
mov(ebp, Operand(esp));
|
@@ -383,12 +419,8 @@ void MacroAssembler::EnterExitFramePrologue(ExitFrame::Mode mode) {
|
|
383
419
|
|
384
420
|
// Reserve room for entry stack pointer and push the debug marker.
|
385
421
|
ASSERT(ExitFrameConstants::kSPOffset == -1 * kPointerSize);
|
386
|
-
push(Immediate(0)); //
|
387
|
-
|
388
|
-
push(Immediate(0));
|
389
|
-
} else {
|
390
|
-
push(Immediate(CodeObject()));
|
391
|
-
}
|
422
|
+
push(Immediate(0)); // Saved entry sp, patched before call.
|
423
|
+
push(Immediate(CodeObject())); // Accessed from ExitFrame::code_slot.
|
392
424
|
|
393
425
|
// Save the frame pointer and the context in top.
|
394
426
|
ExternalReference c_entry_fp_address(Top::k_c_entry_fp_address);
|
@@ -525,6 +557,7 @@ void MacroAssembler::PopTryHandler() {
|
|
525
557
|
Register MacroAssembler::CheckMaps(JSObject* object, Register object_reg,
|
526
558
|
JSObject* holder, Register holder_reg,
|
527
559
|
Register scratch,
|
560
|
+
int save_at_depth,
|
528
561
|
Label* miss) {
|
529
562
|
// Make sure there's no overlap between scratch and the other
|
530
563
|
// registers.
|
@@ -532,7 +565,11 @@ Register MacroAssembler::CheckMaps(JSObject* object, Register object_reg,
|
|
532
565
|
|
533
566
|
// Keep track of the current object in register reg.
|
534
567
|
Register reg = object_reg;
|
535
|
-
int depth =
|
568
|
+
int depth = 0;
|
569
|
+
|
570
|
+
if (save_at_depth == depth) {
|
571
|
+
mov(Operand(esp, kPointerSize), object_reg);
|
572
|
+
}
|
536
573
|
|
537
574
|
// Check the maps in the prototype chain.
|
538
575
|
// Traverse the prototype chain from the object and do map checks.
|
@@ -564,7 +601,6 @@ Register MacroAssembler::CheckMaps(JSObject* object, Register object_reg,
|
|
564
601
|
// to it in the code. Load it from the map.
|
565
602
|
reg = holder_reg; // from now the object is in holder_reg
|
566
603
|
mov(reg, FieldOperand(scratch, Map::kPrototypeOffset));
|
567
|
-
|
568
604
|
} else {
|
569
605
|
// Check the map of the current object.
|
570
606
|
cmp(FieldOperand(reg, HeapObject::kMapOffset),
|
@@ -582,6 +618,10 @@ Register MacroAssembler::CheckMaps(JSObject* object, Register object_reg,
|
|
582
618
|
mov(reg, Handle<JSObject>(prototype));
|
583
619
|
}
|
584
620
|
|
621
|
+
if (save_at_depth == depth) {
|
622
|
+
mov(Operand(esp, kPointerSize), reg);
|
623
|
+
}
|
624
|
+
|
585
625
|
// Go to the next object in the prototype chain.
|
586
626
|
object = prototype;
|
587
627
|
}
|
@@ -592,7 +632,7 @@ Register MacroAssembler::CheckMaps(JSObject* object, Register object_reg,
|
|
592
632
|
j(not_equal, miss, not_taken);
|
593
633
|
|
594
634
|
// Log the check depth.
|
595
|
-
LOG(IntEvent("check-maps-depth", depth));
|
635
|
+
LOG(IntEvent("check-maps-depth", depth + 1));
|
596
636
|
|
597
637
|
// Perform security check for access to the global object and return
|
598
638
|
// the holder register.
|
@@ -870,7 +910,9 @@ void MacroAssembler::AllocateTwoByteString(Register result,
|
|
870
910
|
// Set the map, length and hash field.
|
871
911
|
mov(FieldOperand(result, HeapObject::kMapOffset),
|
872
912
|
Immediate(Factory::string_map()));
|
873
|
-
mov(
|
913
|
+
mov(scratch1, length);
|
914
|
+
SmiTag(scratch1);
|
915
|
+
mov(FieldOperand(result, String::kLengthOffset), scratch1);
|
874
916
|
mov(FieldOperand(result, String::kHashFieldOffset),
|
875
917
|
Immediate(String::kEmptyHashField));
|
876
918
|
}
|
@@ -903,7 +945,9 @@ void MacroAssembler::AllocateAsciiString(Register result,
|
|
903
945
|
// Set the map, length and hash field.
|
904
946
|
mov(FieldOperand(result, HeapObject::kMapOffset),
|
905
947
|
Immediate(Factory::ascii_string_map()));
|
906
|
-
mov(
|
948
|
+
mov(scratch1, length);
|
949
|
+
SmiTag(scratch1);
|
950
|
+
mov(FieldOperand(result, String::kLengthOffset), scratch1);
|
907
951
|
mov(FieldOperand(result, String::kHashFieldOffset),
|
908
952
|
Immediate(String::kEmptyHashField));
|
909
953
|
}
|
@@ -1098,9 +1142,23 @@ void MacroAssembler::CallRuntime(Runtime::Function* f, int num_arguments) {
|
|
1098
1142
|
return;
|
1099
1143
|
}
|
1100
1144
|
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1145
|
+
// TODO(1236192): Most runtime routines don't need the number of
|
1146
|
+
// arguments passed in because it is constant. At some point we
|
1147
|
+
// should remove this need and make the runtime routine entry code
|
1148
|
+
// smarter.
|
1149
|
+
Set(eax, Immediate(num_arguments));
|
1150
|
+
mov(ebx, Immediate(ExternalReference(f)));
|
1151
|
+
CEntryStub ces(1);
|
1152
|
+
CallStub(&ces);
|
1153
|
+
}
|
1154
|
+
|
1155
|
+
|
1156
|
+
void MacroAssembler::CallExternalReference(ExternalReference ref,
|
1157
|
+
int num_arguments) {
|
1158
|
+
mov(eax, Immediate(num_arguments));
|
1159
|
+
mov(ebx, Immediate(ref));
|
1160
|
+
|
1161
|
+
CEntryStub stub(1);
|
1104
1162
|
CallStub(&stub);
|
1105
1163
|
}
|
1106
1164
|
|
@@ -1114,22 +1172,33 @@ Object* MacroAssembler::TryCallRuntime(Runtime::Function* f,
|
|
1114
1172
|
return Heap::undefined_value();
|
1115
1173
|
}
|
1116
1174
|
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1175
|
+
// TODO(1236192): Most runtime routines don't need the number of
|
1176
|
+
// arguments passed in because it is constant. At some point we
|
1177
|
+
// should remove this need and make the runtime routine entry code
|
1178
|
+
// smarter.
|
1179
|
+
Set(eax, Immediate(num_arguments));
|
1180
|
+
mov(ebx, Immediate(ExternalReference(f)));
|
1181
|
+
CEntryStub ces(1);
|
1182
|
+
return TryCallStub(&ces);
|
1121
1183
|
}
|
1122
1184
|
|
1123
1185
|
|
1124
|
-
void MacroAssembler::
|
1125
|
-
|
1126
|
-
|
1186
|
+
void MacroAssembler::TailCallExternalReference(const ExternalReference& ext,
|
1187
|
+
int num_arguments,
|
1188
|
+
int result_size) {
|
1127
1189
|
// TODO(1236192): Most runtime routines don't need the number of
|
1128
1190
|
// arguments passed in because it is constant. At some point we
|
1129
1191
|
// should remove this need and make the runtime routine entry code
|
1130
1192
|
// smarter.
|
1131
1193
|
Set(eax, Immediate(num_arguments));
|
1132
|
-
|
1194
|
+
JumpToExternalReference(ext);
|
1195
|
+
}
|
1196
|
+
|
1197
|
+
|
1198
|
+
void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid,
|
1199
|
+
int num_arguments,
|
1200
|
+
int result_size) {
|
1201
|
+
TailCallExternalReference(ExternalReference(fid), num_arguments, result_size);
|
1133
1202
|
}
|
1134
1203
|
|
1135
1204
|
|
@@ -1199,7 +1268,7 @@ Object* MacroAssembler::TryPopHandleScope(Register saved, Register scratch) {
|
|
1199
1268
|
}
|
1200
1269
|
|
1201
1270
|
|
1202
|
-
void MacroAssembler::
|
1271
|
+
void MacroAssembler::JumpToExternalReference(const ExternalReference& ext) {
|
1203
1272
|
// Set the entry point and jump to the C entry runtime stub.
|
1204
1273
|
mov(ebx, Immediate(ext));
|
1205
1274
|
CEntryStub ces(1);
|
@@ -1321,10 +1390,22 @@ void MacroAssembler::InvokeFunction(Register fun,
|
|
1321
1390
|
}
|
1322
1391
|
|
1323
1392
|
|
1324
|
-
void MacroAssembler::
|
1325
|
-
|
1326
|
-
|
1393
|
+
void MacroAssembler::InvokeFunction(JSFunction* function,
|
1394
|
+
const ParameterCount& actual,
|
1395
|
+
InvokeFlag flag) {
|
1396
|
+
ASSERT(function->is_compiled());
|
1397
|
+
// Get the function and setup the context.
|
1398
|
+
mov(edi, Immediate(Handle<JSFunction>(function)));
|
1399
|
+
mov(esi, FieldOperand(edi, JSFunction::kContextOffset));
|
1400
|
+
|
1401
|
+
// Invoke the cached code.
|
1402
|
+
Handle<Code> code(function->code());
|
1403
|
+
ParameterCount expected(function->shared()->formal_parameter_count());
|
1404
|
+
InvokeCode(code, expected, actual, RelocInfo::CODE_TARGET, flag);
|
1405
|
+
}
|
1327
1406
|
|
1407
|
+
|
1408
|
+
void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id, InvokeFlag flag) {
|
1328
1409
|
// Calls are not allowed in some stubs.
|
1329
1410
|
ASSERT(flag == JUMP_FUNCTION || allow_stub_calls());
|
1330
1411
|
|
@@ -1332,55 +1413,34 @@ void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id, InvokeFlag flag) {
|
|
1332
1413
|
// arguments match the expected number of arguments. Fake a
|
1333
1414
|
// parameter count to avoid emitting code to do the check.
|
1334
1415
|
ParameterCount expected(0);
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
const char* name = Builtins::GetName(id);
|
1339
|
-
int argc = Builtins::GetArgumentsCount(id);
|
1340
|
-
|
1341
|
-
if (!resolved) {
|
1342
|
-
uint32_t flags =
|
1343
|
-
Bootstrapper::FixupFlagsArgumentsCount::encode(argc) |
|
1344
|
-
Bootstrapper::FixupFlagsUseCodeObject::encode(false);
|
1345
|
-
Unresolved entry = { pc_offset() - sizeof(int32_t), flags, name };
|
1346
|
-
unresolved_.Add(entry);
|
1347
|
-
}
|
1416
|
+
GetBuiltinEntry(edx, id);
|
1417
|
+
InvokeCode(Operand(edx), expected, expected, flag);
|
1348
1418
|
}
|
1349
1419
|
|
1350
1420
|
|
1351
1421
|
void MacroAssembler::GetBuiltinEntry(Register target, Builtins::JavaScript id) {
|
1352
|
-
|
1353
|
-
Handle<Code> code = ResolveBuiltin(id, &resolved);
|
1354
|
-
|
1355
|
-
const char* name = Builtins::GetName(id);
|
1356
|
-
int argc = Builtins::GetArgumentsCount(id);
|
1357
|
-
|
1358
|
-
mov(Operand(target), Immediate(code));
|
1359
|
-
if (!resolved) {
|
1360
|
-
uint32_t flags =
|
1361
|
-
Bootstrapper::FixupFlagsArgumentsCount::encode(argc) |
|
1362
|
-
Bootstrapper::FixupFlagsUseCodeObject::encode(true);
|
1363
|
-
Unresolved entry = { pc_offset() - sizeof(int32_t), flags, name };
|
1364
|
-
unresolved_.Add(entry);
|
1365
|
-
}
|
1366
|
-
add(Operand(target), Immediate(Code::kHeaderSize - kHeapObjectTag));
|
1367
|
-
}
|
1422
|
+
ASSERT(!target.is(edi));
|
1368
1423
|
|
1424
|
+
// Load the builtins object into target register.
|
1425
|
+
mov(target, Operand(esi, Context::SlotOffset(Context::GLOBAL_INDEX)));
|
1426
|
+
mov(target, FieldOperand(target, GlobalObject::kBuiltinsOffset));
|
1369
1427
|
|
1370
|
-
|
1371
|
-
|
1372
|
-
// Move the builtin function into the temporary function slot by
|
1373
|
-
// reading it from the builtins object. NOTE: We should be able to
|
1374
|
-
// reduce this to two instructions by putting the function table in
|
1375
|
-
// the global object instead of the "builtins" object and by using a
|
1376
|
-
// real register for the function.
|
1377
|
-
mov(edx, Operand(esi, Context::SlotOffset(Context::GLOBAL_INDEX)));
|
1378
|
-
mov(edx, FieldOperand(edx, GlobalObject::kBuiltinsOffset));
|
1379
|
-
int builtins_offset =
|
1380
|
-
JSBuiltinsObject::kJSBuiltinsOffset + (id * kPointerSize);
|
1381
|
-
mov(edi, FieldOperand(edx, builtins_offset));
|
1428
|
+
// Load the JavaScript builtin function from the builtins object.
|
1429
|
+
mov(edi, FieldOperand(target, JSBuiltinsObject::OffsetOfFunctionWithId(id)));
|
1382
1430
|
|
1383
|
-
|
1431
|
+
// Load the code entry point from the builtins object.
|
1432
|
+
mov(target, FieldOperand(target, JSBuiltinsObject::OffsetOfCodeWithId(id)));
|
1433
|
+
if (FLAG_debug_code) {
|
1434
|
+
// Make sure the code objects in the builtins object and in the
|
1435
|
+
// builtin function are the same.
|
1436
|
+
push(target);
|
1437
|
+
mov(target, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset));
|
1438
|
+
mov(target, FieldOperand(target, SharedFunctionInfo::kCodeOffset));
|
1439
|
+
cmp(target, Operand(esp, 0));
|
1440
|
+
Assert(equal, "Builtin code object changed");
|
1441
|
+
pop(target);
|
1442
|
+
}
|
1443
|
+
lea(target, FieldOperand(target, Code::kHeaderSize));
|
1384
1444
|
}
|
1385
1445
|
|
1386
1446
|
|
@@ -1454,6 +1514,36 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value) {
|
|
1454
1514
|
}
|
1455
1515
|
|
1456
1516
|
|
1517
|
+
void MacroAssembler::IncrementCounter(Condition cc,
|
1518
|
+
StatsCounter* counter,
|
1519
|
+
int value) {
|
1520
|
+
ASSERT(value > 0);
|
1521
|
+
if (FLAG_native_code_counters && counter->Enabled()) {
|
1522
|
+
Label skip;
|
1523
|
+
j(NegateCondition(cc), &skip);
|
1524
|
+
pushfd();
|
1525
|
+
IncrementCounter(counter, value);
|
1526
|
+
popfd();
|
1527
|
+
bind(&skip);
|
1528
|
+
}
|
1529
|
+
}
|
1530
|
+
|
1531
|
+
|
1532
|
+
void MacroAssembler::DecrementCounter(Condition cc,
|
1533
|
+
StatsCounter* counter,
|
1534
|
+
int value) {
|
1535
|
+
ASSERT(value > 0);
|
1536
|
+
if (FLAG_native_code_counters && counter->Enabled()) {
|
1537
|
+
Label skip;
|
1538
|
+
j(NegateCondition(cc), &skip);
|
1539
|
+
pushfd();
|
1540
|
+
DecrementCounter(counter, value);
|
1541
|
+
popfd();
|
1542
|
+
bind(&skip);
|
1543
|
+
}
|
1544
|
+
}
|
1545
|
+
|
1546
|
+
|
1457
1547
|
void MacroAssembler::Assert(Condition cc, const char* msg) {
|
1458
1548
|
if (FLAG_debug_code) Check(cc, msg);
|
1459
1549
|
}
|
@@ -1468,6 +1558,21 @@ void MacroAssembler::Check(Condition cc, const char* msg) {
|
|
1468
1558
|
}
|
1469
1559
|
|
1470
1560
|
|
1561
|
+
void MacroAssembler::CheckStackAlignment() {
|
1562
|
+
int frame_alignment = OS::ActivationFrameAlignment();
|
1563
|
+
int frame_alignment_mask = frame_alignment - 1;
|
1564
|
+
if (frame_alignment > kPointerSize) {
|
1565
|
+
ASSERT(IsPowerOf2(frame_alignment));
|
1566
|
+
Label alignment_as_expected;
|
1567
|
+
test(esp, Immediate(frame_alignment_mask));
|
1568
|
+
j(zero, &alignment_as_expected);
|
1569
|
+
// Abort if stack is not aligned.
|
1570
|
+
int3();
|
1571
|
+
bind(&alignment_as_expected);
|
1572
|
+
}
|
1573
|
+
}
|
1574
|
+
|
1575
|
+
|
1471
1576
|
void MacroAssembler::Abort(const char* msg) {
|
1472
1577
|
// We want to pass the msg string like a smi to avoid GC
|
1473
1578
|
// problems, however msg is not guaranteed to be aligned
|
@@ -1495,6 +1600,92 @@ void MacroAssembler::Abort(const char* msg) {
|
|
1495
1600
|
}
|
1496
1601
|
|
1497
1602
|
|
1603
|
+
void MacroAssembler::JumpIfInstanceTypeIsNotSequentialAscii(
|
1604
|
+
Register instance_type,
|
1605
|
+
Register scratch,
|
1606
|
+
Label* failure) {
|
1607
|
+
if (!scratch.is(instance_type)) {
|
1608
|
+
mov(scratch, instance_type);
|
1609
|
+
}
|
1610
|
+
and_(scratch,
|
1611
|
+
kIsNotStringMask | kStringRepresentationMask | kStringEncodingMask);
|
1612
|
+
cmp(scratch, kStringTag | kSeqStringTag | kAsciiStringTag);
|
1613
|
+
j(not_equal, failure);
|
1614
|
+
}
|
1615
|
+
|
1616
|
+
|
1617
|
+
void MacroAssembler::JumpIfNotBothSequentialAsciiStrings(Register object1,
|
1618
|
+
Register object2,
|
1619
|
+
Register scratch1,
|
1620
|
+
Register scratch2,
|
1621
|
+
Label* failure) {
|
1622
|
+
// Check that both objects are not smis.
|
1623
|
+
ASSERT_EQ(0, kSmiTag);
|
1624
|
+
mov(scratch1, Operand(object1));
|
1625
|
+
and_(scratch1, Operand(object2));
|
1626
|
+
test(scratch1, Immediate(kSmiTagMask));
|
1627
|
+
j(zero, failure);
|
1628
|
+
|
1629
|
+
// Load instance type for both strings.
|
1630
|
+
mov(scratch1, FieldOperand(object1, HeapObject::kMapOffset));
|
1631
|
+
mov(scratch2, FieldOperand(object2, HeapObject::kMapOffset));
|
1632
|
+
movzx_b(scratch1, FieldOperand(scratch1, Map::kInstanceTypeOffset));
|
1633
|
+
movzx_b(scratch2, FieldOperand(scratch2, Map::kInstanceTypeOffset));
|
1634
|
+
|
1635
|
+
// Check that both are flat ascii strings.
|
1636
|
+
const int kFlatAsciiStringMask =
|
1637
|
+
kIsNotStringMask | kStringRepresentationMask | kStringEncodingMask;
|
1638
|
+
const int kFlatAsciiStringTag = ASCII_STRING_TYPE;
|
1639
|
+
// Interleave bits from both instance types and compare them in one check.
|
1640
|
+
ASSERT_EQ(0, kFlatAsciiStringMask & (kFlatAsciiStringMask << 3));
|
1641
|
+
and_(scratch1, kFlatAsciiStringMask);
|
1642
|
+
and_(scratch2, kFlatAsciiStringMask);
|
1643
|
+
lea(scratch1, Operand(scratch1, scratch2, times_8, 0));
|
1644
|
+
cmp(scratch1, kFlatAsciiStringTag | (kFlatAsciiStringTag << 3));
|
1645
|
+
j(not_equal, failure);
|
1646
|
+
}
|
1647
|
+
|
1648
|
+
|
1649
|
+
void MacroAssembler::PrepareCallCFunction(int num_arguments, Register scratch) {
|
1650
|
+
int frameAlignment = OS::ActivationFrameAlignment();
|
1651
|
+
if (frameAlignment != 0) {
|
1652
|
+
// Make stack end at alignment and make room for num_arguments words
|
1653
|
+
// and the original value of esp.
|
1654
|
+
mov(scratch, esp);
|
1655
|
+
sub(Operand(esp), Immediate((num_arguments + 1) * kPointerSize));
|
1656
|
+
ASSERT(IsPowerOf2(frameAlignment));
|
1657
|
+
and_(esp, -frameAlignment);
|
1658
|
+
mov(Operand(esp, num_arguments * kPointerSize), scratch);
|
1659
|
+
} else {
|
1660
|
+
sub(Operand(esp), Immediate(num_arguments * kPointerSize));
|
1661
|
+
}
|
1662
|
+
}
|
1663
|
+
|
1664
|
+
|
1665
|
+
void MacroAssembler::CallCFunction(ExternalReference function,
|
1666
|
+
int num_arguments) {
|
1667
|
+
// Trashing eax is ok as it will be the return value.
|
1668
|
+
mov(Operand(eax), Immediate(function));
|
1669
|
+
CallCFunction(eax, num_arguments);
|
1670
|
+
}
|
1671
|
+
|
1672
|
+
|
1673
|
+
void MacroAssembler::CallCFunction(Register function,
|
1674
|
+
int num_arguments) {
|
1675
|
+
// Check stack alignment.
|
1676
|
+
if (FLAG_debug_code) {
|
1677
|
+
CheckStackAlignment();
|
1678
|
+
}
|
1679
|
+
|
1680
|
+
call(Operand(function));
|
1681
|
+
if (OS::ActivationFrameAlignment() != 0) {
|
1682
|
+
mov(esp, Operand(esp, num_arguments * kPointerSize));
|
1683
|
+
} else {
|
1684
|
+
add(Operand(esp), Immediate(num_arguments * sizeof(int32_t)));
|
1685
|
+
}
|
1686
|
+
}
|
1687
|
+
|
1688
|
+
|
1498
1689
|
CodePatcher::CodePatcher(byte* address, int size)
|
1499
1690
|
: address_(address), size_(size), masm_(address, size + Assembler::kGap) {
|
1500
1691
|
// Create a new macro assembler pointing to the address of the code to patch.
|