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
@@ -0,0 +1,180 @@
|
|
1
|
+
// Copyright 2010 the V8 project authors. All rights reserved.
|
2
|
+
// Redistribution and use in source and binary forms, with or without
|
3
|
+
// modification, are permitted provided that the following conditions are
|
4
|
+
// met:
|
5
|
+
//
|
6
|
+
// * Redistributions of source code must retain the above copyright
|
7
|
+
// notice, this list of conditions and the following disclaimer.
|
8
|
+
// * Redistributions in binary form must reproduce the above
|
9
|
+
// copyright notice, this list of conditions and the following
|
10
|
+
// disclaimer in the documentation and/or other materials provided
|
11
|
+
// with the distribution.
|
12
|
+
// * Neither the name of Google Inc. nor the names of its
|
13
|
+
// contributors may be used to endorse or promote products derived
|
14
|
+
// from this software without specific prior written permission.
|
15
|
+
//
|
16
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
18
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
20
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
23
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
24
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
+
|
28
|
+
#ifndef V8_FLOW_GRAPH_H_
|
29
|
+
#define V8_FLOW_GRAPH_H_
|
30
|
+
|
31
|
+
#include "v8.h"
|
32
|
+
|
33
|
+
#include "data-flow.h"
|
34
|
+
#include "zone.h"
|
35
|
+
|
36
|
+
namespace v8 {
|
37
|
+
namespace internal {
|
38
|
+
|
39
|
+
// The nodes of a flow graph are basic blocks. Basic blocks consist of
|
40
|
+
// instructions represented as pointers to AST nodes in the order that they
|
41
|
+
// would be visited by the code generator. A block can have arbitrarily many
|
42
|
+
// (even zero) predecessors and up to two successors. Blocks with multiple
|
43
|
+
// predecessors are "join nodes" and blocks with multiple successors are
|
44
|
+
// "branch nodes". A block can be both a branch and a join node.
|
45
|
+
//
|
46
|
+
// Flow graphs are in edge split form: a branch node is never the
|
47
|
+
// predecessor of a merge node. Empty basic blocks are inserted to maintain
|
48
|
+
// edge split form.
|
49
|
+
class BasicBlock: public ZoneObject {
|
50
|
+
public:
|
51
|
+
// Construct a basic block with a given predecessor. NULL indicates no
|
52
|
+
// predecessor or that the predecessor will be set later.
|
53
|
+
explicit BasicBlock(BasicBlock* predecessor)
|
54
|
+
: predecessors_(2),
|
55
|
+
instructions_(8),
|
56
|
+
left_successor_(NULL),
|
57
|
+
right_successor_(NULL),
|
58
|
+
mark_(false) {
|
59
|
+
if (predecessor != NULL) AddPredecessor(predecessor);
|
60
|
+
}
|
61
|
+
|
62
|
+
bool HasPredecessor() { return !predecessors_.is_empty(); }
|
63
|
+
bool HasSuccessor() { return left_successor_ != NULL; }
|
64
|
+
|
65
|
+
// Add a given basic block as a predecessor of this block. This function
|
66
|
+
// also adds this block as a successor of the given block.
|
67
|
+
void AddPredecessor(BasicBlock* predecessor) {
|
68
|
+
ASSERT(predecessor != NULL);
|
69
|
+
predecessors_.Add(predecessor);
|
70
|
+
predecessor->AddSuccessor(this);
|
71
|
+
}
|
72
|
+
|
73
|
+
// Add an instruction to the end of this block. The block must be "open"
|
74
|
+
// by not having a successor yet.
|
75
|
+
void AddInstruction(AstNode* instruction) {
|
76
|
+
ASSERT(!HasSuccessor() && instruction != NULL);
|
77
|
+
instructions_.Add(instruction);
|
78
|
+
}
|
79
|
+
|
80
|
+
// Perform a depth-first traversal of graph rooted at this node,
|
81
|
+
// accumulating pre- and postorder traversal orders. Visited nodes are
|
82
|
+
// marked with mark.
|
83
|
+
void BuildTraversalOrder(ZoneList<BasicBlock*>* preorder,
|
84
|
+
ZoneList<BasicBlock*>* postorder,
|
85
|
+
bool mark);
|
86
|
+
bool GetMark() { return mark_; }
|
87
|
+
|
88
|
+
#ifdef DEBUG
|
89
|
+
// In debug mode, blocks are numbered in reverse postorder to help with
|
90
|
+
// printing.
|
91
|
+
int number() { return number_; }
|
92
|
+
void set_number(int n) { number_ = n; }
|
93
|
+
|
94
|
+
// Print a basic block, given the number of the first instruction.
|
95
|
+
// Returns the next number after the number of the last instruction.
|
96
|
+
int PrintAsText(int instruction_number);
|
97
|
+
#endif
|
98
|
+
|
99
|
+
private:
|
100
|
+
// Add a given basic block as successor to this block. This function does
|
101
|
+
// not add this block as a predecessor of the given block so as to avoid
|
102
|
+
// circularity.
|
103
|
+
void AddSuccessor(BasicBlock* successor) {
|
104
|
+
ASSERT(right_successor_ == NULL && successor != NULL);
|
105
|
+
if (HasSuccessor()) {
|
106
|
+
right_successor_ = successor;
|
107
|
+
} else {
|
108
|
+
left_successor_ = successor;
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
ZoneList<BasicBlock*> predecessors_;
|
113
|
+
ZoneList<AstNode*> instructions_;
|
114
|
+
BasicBlock* left_successor_;
|
115
|
+
BasicBlock* right_successor_;
|
116
|
+
|
117
|
+
// Support for graph traversal. Before traversal, all nodes in the graph
|
118
|
+
// have the same mark (true or false). Traversal marks already-visited
|
119
|
+
// nodes with the opposite mark. After traversal, all nodes again have
|
120
|
+
// the same mark. Traversal of the same graph is not reentrant.
|
121
|
+
bool mark_;
|
122
|
+
|
123
|
+
#ifdef DEBUG
|
124
|
+
int number_;
|
125
|
+
#endif
|
126
|
+
|
127
|
+
DISALLOW_COPY_AND_ASSIGN(BasicBlock);
|
128
|
+
};
|
129
|
+
|
130
|
+
|
131
|
+
// A flow graph has distinguished entry and exit blocks. The entry block is
|
132
|
+
// the only one with no predecessors and the exit block is the only one with
|
133
|
+
// no successors.
|
134
|
+
class FlowGraph: public ZoneObject {
|
135
|
+
public:
|
136
|
+
FlowGraph(BasicBlock* entry, BasicBlock* exit)
|
137
|
+
: entry_(entry), exit_(exit), preorder_(8), postorder_(8) {
|
138
|
+
}
|
139
|
+
|
140
|
+
ZoneList<BasicBlock*>* preorder() { return &preorder_; }
|
141
|
+
ZoneList<BasicBlock*>* postorder() { return &postorder_; }
|
142
|
+
|
143
|
+
#ifdef DEBUG
|
144
|
+
void PrintAsText(Handle<String> name);
|
145
|
+
#endif
|
146
|
+
|
147
|
+
private:
|
148
|
+
BasicBlock* entry_;
|
149
|
+
BasicBlock* exit_;
|
150
|
+
ZoneList<BasicBlock*> preorder_;
|
151
|
+
ZoneList<BasicBlock*> postorder_;
|
152
|
+
};
|
153
|
+
|
154
|
+
|
155
|
+
// The flow graph builder walks the AST adding reachable AST nodes to the
|
156
|
+
// flow graph as instructions. It remembers the entry and exit nodes of the
|
157
|
+
// graph, and keeps a pointer to the current block being constructed.
|
158
|
+
class FlowGraphBuilder: public AstVisitor {
|
159
|
+
public:
|
160
|
+
FlowGraphBuilder() {}
|
161
|
+
|
162
|
+
FlowGraph* Build(FunctionLiteral* lit);
|
163
|
+
|
164
|
+
private:
|
165
|
+
// AST node visit functions.
|
166
|
+
#define DECLARE_VISIT(type) virtual void Visit##type(type* node);
|
167
|
+
AST_NODE_LIST(DECLARE_VISIT)
|
168
|
+
#undef DECLARE_VISIT
|
169
|
+
|
170
|
+
BasicBlock* entry_;
|
171
|
+
BasicBlock* exit_;
|
172
|
+
BasicBlock* current_;
|
173
|
+
|
174
|
+
DISALLOW_COPY_AND_ASSIGN(FlowGraphBuilder);
|
175
|
+
};
|
176
|
+
|
177
|
+
|
178
|
+
} } // namespace v8::internal
|
179
|
+
|
180
|
+
#endif // V8_FLOW_GRAPH_H_
|
@@ -28,14 +28,11 @@
|
|
28
28
|
#include "v8.h"
|
29
29
|
|
30
30
|
#include "frame-element.h"
|
31
|
+
#include "zone-inl.h"
|
31
32
|
|
32
33
|
namespace v8 {
|
33
34
|
namespace internal {
|
34
35
|
|
35
|
-
// -------------------------------------------------------------------------
|
36
|
-
// FrameElement implementation.
|
37
|
-
|
38
|
-
|
39
36
|
FrameElement::ZoneObjectList* FrameElement::ConstantList() {
|
40
37
|
static ZoneObjectList list(10);
|
41
38
|
return &list;
|
@@ -28,7 +28,9 @@
|
|
28
28
|
#ifndef V8_FRAME_ELEMENT_H_
|
29
29
|
#define V8_FRAME_ELEMENT_H_
|
30
30
|
|
31
|
-
#include "
|
31
|
+
#include "type-info.h"
|
32
|
+
#include "macro-assembler.h"
|
33
|
+
#include "zone.h"
|
32
34
|
|
33
35
|
namespace v8 {
|
34
36
|
namespace internal {
|
@@ -52,11 +54,27 @@ class FrameElement BASE_EMBEDDED {
|
|
52
54
|
SYNCED
|
53
55
|
};
|
54
56
|
|
57
|
+
inline TypeInfo type_info() {
|
58
|
+
// Copied elements do not have type info. Instead
|
59
|
+
// we have to inspect their backing element in the frame.
|
60
|
+
ASSERT(!is_copy());
|
61
|
+
return TypeInfo::FromInt(TypeInfoField::decode(value_));
|
62
|
+
}
|
63
|
+
|
64
|
+
inline void set_type_info(TypeInfo info) {
|
65
|
+
// Copied elements do not have type info. Instead
|
66
|
+
// we have to inspect their backing element in the frame.
|
67
|
+
ASSERT(!is_copy());
|
68
|
+
value_ = value_ & ~TypeInfoField::mask();
|
69
|
+
value_ = value_ | TypeInfoField::encode(info.ToInt());
|
70
|
+
}
|
71
|
+
|
55
72
|
// The default constructor creates an invalid frame element.
|
56
73
|
FrameElement() {
|
57
74
|
value_ = TypeField::encode(INVALID)
|
58
75
|
| CopiedField::encode(false)
|
59
76
|
| SyncedField::encode(false)
|
77
|
+
| TypeInfoField::encode(TypeInfo::Uninitialized().ToInt())
|
60
78
|
| DataField::encode(0);
|
61
79
|
}
|
62
80
|
|
@@ -67,22 +85,24 @@ class FrameElement BASE_EMBEDDED {
|
|
67
85
|
}
|
68
86
|
|
69
87
|
// Factory function to construct an in-memory frame element.
|
70
|
-
static FrameElement MemoryElement() {
|
71
|
-
FrameElement result(MEMORY, no_reg, SYNCED);
|
88
|
+
static FrameElement MemoryElement(TypeInfo info) {
|
89
|
+
FrameElement result(MEMORY, no_reg, SYNCED, info);
|
72
90
|
return result;
|
73
91
|
}
|
74
92
|
|
75
93
|
// Factory function to construct an in-register frame element.
|
76
94
|
static FrameElement RegisterElement(Register reg,
|
77
|
-
SyncFlag is_synced
|
78
|
-
|
95
|
+
SyncFlag is_synced,
|
96
|
+
TypeInfo info) {
|
97
|
+
return FrameElement(REGISTER, reg, is_synced, info);
|
79
98
|
}
|
80
99
|
|
81
100
|
// Factory function to construct a frame element whose value is known at
|
82
101
|
// compile time.
|
83
102
|
static FrameElement ConstantElement(Handle<Object> value,
|
84
103
|
SyncFlag is_synced) {
|
85
|
-
|
104
|
+
TypeInfo info = TypeInfo::TypeFromValue(value);
|
105
|
+
FrameElement result(value, is_synced, info);
|
86
106
|
return result;
|
87
107
|
}
|
88
108
|
|
@@ -120,6 +140,16 @@ class FrameElement BASE_EMBEDDED {
|
|
120
140
|
void set_copied() { value_ = value_ | CopiedField::encode(true); }
|
121
141
|
void clear_copied() { value_ = value_ & ~CopiedField::mask(); }
|
122
142
|
|
143
|
+
// An untagged int32 FrameElement represents a signed int32
|
144
|
+
// on the stack. These are only allowed in a side-effect-free
|
145
|
+
// int32 calculation, and if a non-int32 input shows up or an overflow
|
146
|
+
// occurs, we bail out and drop all the int32 values.
|
147
|
+
void set_untagged_int32(bool value) {
|
148
|
+
value_ &= ~UntaggedInt32Field::mask();
|
149
|
+
value_ |= UntaggedInt32Field::encode(value);
|
150
|
+
}
|
151
|
+
bool is_untagged_int32() const { return UntaggedInt32Field::decode(value_); }
|
152
|
+
|
123
153
|
Register reg() const {
|
124
154
|
ASSERT(is_register());
|
125
155
|
uint32_t reg = DataField::decode(value_);
|
@@ -185,18 +215,23 @@ class FrameElement BASE_EMBEDDED {
|
|
185
215
|
};
|
186
216
|
|
187
217
|
// Used to construct memory and register elements.
|
188
|
-
FrameElement(Type type,
|
218
|
+
FrameElement(Type type,
|
219
|
+
Register reg,
|
220
|
+
SyncFlag is_synced,
|
221
|
+
TypeInfo info) {
|
189
222
|
value_ = TypeField::encode(type)
|
190
223
|
| CopiedField::encode(false)
|
191
224
|
| SyncedField::encode(is_synced != NOT_SYNCED)
|
225
|
+
| TypeInfoField::encode(info.ToInt())
|
192
226
|
| DataField::encode(reg.code_ > 0 ? reg.code_ : 0);
|
193
227
|
}
|
194
228
|
|
195
229
|
// Used to construct constant elements.
|
196
|
-
FrameElement(Handle<Object> value, SyncFlag is_synced) {
|
230
|
+
FrameElement(Handle<Object> value, SyncFlag is_synced, TypeInfo info) {
|
197
231
|
value_ = TypeField::encode(CONSTANT)
|
198
232
|
| CopiedField::encode(false)
|
199
233
|
| SyncedField::encode(is_synced != NOT_SYNCED)
|
234
|
+
| TypeInfoField::encode(info.ToInt())
|
200
235
|
| DataField::encode(ConstantList()->length());
|
201
236
|
ConstantList()->Add(value);
|
202
237
|
}
|
@@ -222,10 +257,13 @@ class FrameElement BASE_EMBEDDED {
|
|
222
257
|
// Encode type, copied, synced and data in one 32 bit integer.
|
223
258
|
uint32_t value_;
|
224
259
|
|
260
|
+
// Declare BitFields with template parameters <type, start, size>.
|
225
261
|
class TypeField: public BitField<Type, 0, 3> {};
|
226
|
-
class CopiedField: public BitField<
|
227
|
-
class SyncedField: public BitField<
|
228
|
-
class
|
262
|
+
class CopiedField: public BitField<bool, 3, 1> {};
|
263
|
+
class SyncedField: public BitField<bool, 4, 1> {};
|
264
|
+
class UntaggedInt32Field: public BitField<bool, 5, 1> {};
|
265
|
+
class TypeInfoField: public BitField<int, 6, 6> {};
|
266
|
+
class DataField: public BitField<uint32_t, 12, 32 - 12> {};
|
229
267
|
|
230
268
|
friend class VirtualFrame;
|
231
269
|
};
|
@@ -32,7 +32,6 @@
|
|
32
32
|
#include "scopeinfo.h"
|
33
33
|
#include "string-stream.h"
|
34
34
|
#include "top.h"
|
35
|
-
#include "zone-inl.h"
|
36
35
|
|
37
36
|
namespace v8 {
|
38
37
|
namespace internal {
|
@@ -176,7 +175,7 @@ StackFrame* StackFrameIterator::SingletonFor(StackFrame::Type type) {
|
|
176
175
|
|
177
176
|
|
178
177
|
StackTraceFrameIterator::StackTraceFrameIterator() {
|
179
|
-
if (!done() && !
|
178
|
+
if (!done() && !IsValidFrame()) Advance();
|
180
179
|
}
|
181
180
|
|
182
181
|
|
@@ -184,10 +183,18 @@ void StackTraceFrameIterator::Advance() {
|
|
184
183
|
while (true) {
|
185
184
|
JavaScriptFrameIterator::Advance();
|
186
185
|
if (done()) return;
|
187
|
-
if (
|
186
|
+
if (IsValidFrame()) return;
|
188
187
|
}
|
189
188
|
}
|
190
189
|
|
190
|
+
bool StackTraceFrameIterator::IsValidFrame() {
|
191
|
+
if (!frame()->function()->IsJSFunction()) return false;
|
192
|
+
Object* script = JSFunction::cast(frame()->function())->shared()->script();
|
193
|
+
// Don't show functions from native scripts to user.
|
194
|
+
return (script->IsScript() &&
|
195
|
+
Script::TYPE_NATIVE != Script::cast(script)->type()->value());
|
196
|
+
}
|
197
|
+
|
191
198
|
|
192
199
|
// -------------------------------------------------------------------------
|
193
200
|
|
@@ -299,14 +306,12 @@ void SafeStackTraceFrameIterator::Advance() {
|
|
299
306
|
|
300
307
|
|
301
308
|
void StackHandler::Cook(Code* code) {
|
302
|
-
ASSERT(MarkCompactCollector::IsCompacting());
|
303
309
|
ASSERT(code->contains(pc()));
|
304
310
|
set_pc(AddressFrom<Address>(pc() - code->instruction_start()));
|
305
311
|
}
|
306
312
|
|
307
313
|
|
308
314
|
void StackHandler::Uncook(Code* code) {
|
309
|
-
ASSERT(MarkCompactCollector::HasCompacted());
|
310
315
|
set_pc(code->instruction_start() + OffsetFrom(pc()));
|
311
316
|
ASSERT(code->contains(pc()));
|
312
317
|
}
|
@@ -322,9 +327,6 @@ bool StackFrame::HasHandler() const {
|
|
322
327
|
|
323
328
|
|
324
329
|
void StackFrame::CookFramesForThread(ThreadLocalTop* thread) {
|
325
|
-
// Only cooking frames when the collector is compacting and thus moving code
|
326
|
-
// around.
|
327
|
-
ASSERT(MarkCompactCollector::IsCompacting());
|
328
330
|
ASSERT(!thread->stack_is_cooked());
|
329
331
|
for (StackFrameIterator it(thread); !it.done(); it.Advance()) {
|
330
332
|
it.frame()->Cook();
|
@@ -334,9 +336,6 @@ void StackFrame::CookFramesForThread(ThreadLocalTop* thread) {
|
|
334
336
|
|
335
337
|
|
336
338
|
void StackFrame::UncookFramesForThread(ThreadLocalTop* thread) {
|
337
|
-
// Only uncooking frames when the collector is compacting and thus moving code
|
338
|
-
// around.
|
339
|
-
ASSERT(MarkCompactCollector::HasCompacted());
|
340
339
|
ASSERT(thread->stack_is_cooked());
|
341
340
|
for (StackFrameIterator it(thread); !it.done(); it.Advance()) {
|
342
341
|
it.frame()->Uncook();
|
@@ -347,6 +346,7 @@ void StackFrame::UncookFramesForThread(ThreadLocalTop* thread) {
|
|
347
346
|
|
348
347
|
void StackFrame::Cook() {
|
349
348
|
Code* code = this->code();
|
349
|
+
ASSERT(code->IsCode());
|
350
350
|
for (StackHandlerIterator it(this, top_handler()); !it.done(); it.Advance()) {
|
351
351
|
it.handler()->Cook(code);
|
352
352
|
}
|
@@ -357,6 +357,7 @@ void StackFrame::Cook() {
|
|
357
357
|
|
358
358
|
void StackFrame::Uncook() {
|
359
359
|
Code* code = this->code();
|
360
|
+
ASSERT(code->IsCode());
|
360
361
|
for (StackHandlerIterator it(this, top_handler()); !it.done(); it.Advance()) {
|
361
362
|
it.handler()->Uncook(code);
|
362
363
|
}
|
@@ -381,6 +382,12 @@ void EntryFrame::ComputeCallerState(State* state) const {
|
|
381
382
|
}
|
382
383
|
|
383
384
|
|
385
|
+
void EntryFrame::SetCallerFp(Address caller_fp) {
|
386
|
+
const int offset = EntryFrameConstants::kCallerFPOffset;
|
387
|
+
Memory::Address_at(this->fp() + offset) = caller_fp;
|
388
|
+
}
|
389
|
+
|
390
|
+
|
384
391
|
StackFrame::Type EntryFrame::GetCallerState(State* state) const {
|
385
392
|
const int offset = EntryFrameConstants::kCallerFPOffset;
|
386
393
|
Address fp = Memory::Address_at(this->fp() + offset);
|
@@ -400,12 +407,7 @@ Object*& ExitFrame::code_slot() const {
|
|
400
407
|
|
401
408
|
|
402
409
|
Code* ExitFrame::code() const {
|
403
|
-
|
404
|
-
if (code->IsSmi()) {
|
405
|
-
return Heap::c_entry_debug_break_code();
|
406
|
-
} else {
|
407
|
-
return Code::cast(code);
|
408
|
-
}
|
410
|
+
return Code::cast(code_slot());
|
409
411
|
}
|
410
412
|
|
411
413
|
|
@@ -418,6 +420,11 @@ void ExitFrame::ComputeCallerState(State* state) const {
|
|
418
420
|
}
|
419
421
|
|
420
422
|
|
423
|
+
void ExitFrame::SetCallerFp(Address caller_fp) {
|
424
|
+
Memory::Address_at(fp() + ExitFrameConstants::kCallerFPOffset) = caller_fp;
|
425
|
+
}
|
426
|
+
|
427
|
+
|
421
428
|
Address ExitFrame::GetCallerStackPointer() const {
|
422
429
|
return fp() + ExitFrameConstants::kCallerSPDisplacement;
|
423
430
|
}
|
@@ -447,6 +454,12 @@ void StandardFrame::ComputeCallerState(State* state) const {
|
|
447
454
|
}
|
448
455
|
|
449
456
|
|
457
|
+
void StandardFrame::SetCallerFp(Address caller_fp) {
|
458
|
+
Memory::Address_at(fp() + StandardFrameConstants::kCallerFPOffset) =
|
459
|
+
caller_fp;
|
460
|
+
}
|
461
|
+
|
462
|
+
|
450
463
|
bool StandardFrame::IsExpressionInsideHandler(int n) const {
|
451
464
|
Address address = GetExpressionAddress(n);
|
452
465
|
for (StackHandlerIterator it(this, top_handler()); !it.done(); it.Advance()) {
|
@@ -518,6 +531,31 @@ void JavaScriptFrame::Print(StringStream* accumulator,
|
|
518
531
|
Code* code = NULL;
|
519
532
|
if (IsConstructor()) accumulator->Add("new ");
|
520
533
|
accumulator->PrintFunction(function, receiver, &code);
|
534
|
+
|
535
|
+
if (function->IsJSFunction()) {
|
536
|
+
Handle<SharedFunctionInfo> shared(JSFunction::cast(function)->shared());
|
537
|
+
Object* script_obj = shared->script();
|
538
|
+
if (script_obj->IsScript()) {
|
539
|
+
Handle<Script> script(Script::cast(script_obj));
|
540
|
+
accumulator->Add(" [");
|
541
|
+
accumulator->PrintName(script->name());
|
542
|
+
|
543
|
+
Address pc = this->pc();
|
544
|
+
if (code != NULL && code->kind() == Code::FUNCTION &&
|
545
|
+
pc >= code->instruction_start() && pc < code->relocation_start()) {
|
546
|
+
int source_pos = code->SourcePosition(pc);
|
547
|
+
int line = GetScriptLineNumberSafe(script, source_pos) + 1;
|
548
|
+
accumulator->Add(":%d", line);
|
549
|
+
} else {
|
550
|
+
int function_start_pos = shared->start_position();
|
551
|
+
int line = GetScriptLineNumberSafe(script, function_start_pos) + 1;
|
552
|
+
accumulator->Add(":~%d", line);
|
553
|
+
}
|
554
|
+
|
555
|
+
accumulator->Add("] ");
|
556
|
+
}
|
557
|
+
}
|
558
|
+
|
521
559
|
accumulator->Add("(this=%o", receiver);
|
522
560
|
|
523
561
|
// Get scope information for nicer output, if possible. If code is
|
@@ -746,4 +784,40 @@ int JSCallerSavedCode(int n) {
|
|
746
784
|
}
|
747
785
|
|
748
786
|
|
787
|
+
#define DEFINE_WRAPPER(type, field) \
|
788
|
+
class field##_Wrapper : public ZoneObject { \
|
789
|
+
public: /* NOLINT */ \
|
790
|
+
field##_Wrapper(const field& original) : frame_(original) { \
|
791
|
+
} \
|
792
|
+
field frame_; \
|
793
|
+
};
|
794
|
+
STACK_FRAME_TYPE_LIST(DEFINE_WRAPPER)
|
795
|
+
#undef DEFINE_WRAPPER
|
796
|
+
|
797
|
+
static StackFrame* AllocateFrameCopy(StackFrame* frame) {
|
798
|
+
#define FRAME_TYPE_CASE(type, field) \
|
799
|
+
case StackFrame::type: { \
|
800
|
+
field##_Wrapper* wrapper = \
|
801
|
+
new field##_Wrapper(*(reinterpret_cast<field*>(frame))); \
|
802
|
+
return &wrapper->frame_; \
|
803
|
+
}
|
804
|
+
|
805
|
+
switch (frame->type()) {
|
806
|
+
STACK_FRAME_TYPE_LIST(FRAME_TYPE_CASE)
|
807
|
+
default: UNREACHABLE();
|
808
|
+
}
|
809
|
+
#undef FRAME_TYPE_CASE
|
810
|
+
return NULL;
|
811
|
+
}
|
812
|
+
|
813
|
+
Vector<StackFrame*> CreateStackMap() {
|
814
|
+
ZoneList<StackFrame*> list(10);
|
815
|
+
for (StackFrameIterator it; !it.done(); it.Advance()) {
|
816
|
+
StackFrame* frame = AllocateFrameCopy(it.frame());
|
817
|
+
list.Add(frame);
|
818
|
+
}
|
819
|
+
return list.ToVector();
|
820
|
+
}
|
821
|
+
|
822
|
+
|
749
823
|
} } // namespace v8::internal
|