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,170 @@
|
|
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_LIVEEDIT_H_
|
29
|
+
#define V8_LIVEEDIT_H_
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
// Live Edit feature implementation.
|
34
|
+
// User should be able to change script on already running VM. This feature
|
35
|
+
// matches hot swap features in other frameworks.
|
36
|
+
//
|
37
|
+
// The basic use-case is when user spots some mistake in function body
|
38
|
+
// from debugger and wishes to change the algorithm without restart.
|
39
|
+
//
|
40
|
+
// A single change always has a form of a simple replacement (in pseudo-code):
|
41
|
+
// script.source[positions, positions+length] = new_string;
|
42
|
+
// Implementation first determines, which function's body includes this
|
43
|
+
// change area. Then both old and new versions of script are fully compiled
|
44
|
+
// in order to analyze, whether the function changed its outer scope
|
45
|
+
// expectations (or number of parameters). If it didn't, function's code is
|
46
|
+
// patched with a newly compiled code. If it did change, enclosing function
|
47
|
+
// gets patched. All inner functions are left untouched, whatever happened
|
48
|
+
// to them in a new script version. However, new version of code will
|
49
|
+
// instantiate newly compiled functions.
|
50
|
+
|
51
|
+
|
52
|
+
#include "compiler.h"
|
53
|
+
|
54
|
+
namespace v8 {
|
55
|
+
namespace internal {
|
56
|
+
|
57
|
+
// This class collects some specific information on structure of functions
|
58
|
+
// in a particular script. It gets called from compiler all the time, but
|
59
|
+
// actually records any data only when liveedit operation is in process;
|
60
|
+
// in any other time this class is very cheap.
|
61
|
+
//
|
62
|
+
// The primary interest of the Tracker is to record function scope structures
|
63
|
+
// in order to analyze whether function code maybe safely patched (with new
|
64
|
+
// code successfully reading existing data from function scopes). The Tracker
|
65
|
+
// also collects compiled function codes.
|
66
|
+
class LiveEditFunctionTracker {
|
67
|
+
public:
|
68
|
+
explicit LiveEditFunctionTracker(FunctionLiteral* fun);
|
69
|
+
~LiveEditFunctionTracker();
|
70
|
+
void RecordFunctionInfo(Handle<SharedFunctionInfo> info,
|
71
|
+
FunctionLiteral* lit);
|
72
|
+
void RecordRootFunctionInfo(Handle<Code> code);
|
73
|
+
|
74
|
+
static bool IsActive();
|
75
|
+
};
|
76
|
+
|
77
|
+
#ifdef ENABLE_DEBUGGER_SUPPORT
|
78
|
+
|
79
|
+
class LiveEdit : AllStatic {
|
80
|
+
public:
|
81
|
+
static JSArray* GatherCompileInfo(Handle<Script> script,
|
82
|
+
Handle<String> source);
|
83
|
+
|
84
|
+
static void WrapSharedFunctionInfos(Handle<JSArray> array);
|
85
|
+
|
86
|
+
static Object* ReplaceFunctionCode(Handle<JSArray> new_compile_info_array,
|
87
|
+
Handle<JSArray> shared_info_array);
|
88
|
+
|
89
|
+
// Updates script field in FunctionSharedInfo.
|
90
|
+
static void SetFunctionScript(Handle<JSValue> function_wrapper,
|
91
|
+
Handle<Object> script_handle);
|
92
|
+
|
93
|
+
static Object* PatchFunctionPositions(
|
94
|
+
Handle<JSArray> shared_info_array, Handle<JSArray> position_change_array);
|
95
|
+
|
96
|
+
// For a script updates its source field. If old_script_name is provided
|
97
|
+
// (i.e. is a String), also creates a copy of the script with its original
|
98
|
+
// source and sends notification to debugger.
|
99
|
+
static Object* ChangeScriptSource(Handle<Script> original_script,
|
100
|
+
Handle<String> new_source,
|
101
|
+
Handle<Object> old_script_name);
|
102
|
+
|
103
|
+
// In a code of a parent function replaces original function as embedded
|
104
|
+
// object with a substitution one.
|
105
|
+
static void ReplaceRefToNestedFunction(Handle<JSValue> parent_function_shared,
|
106
|
+
Handle<JSValue> orig_function_shared,
|
107
|
+
Handle<JSValue> subst_function_shared);
|
108
|
+
|
109
|
+
// Checks listed functions on stack and return array with corresponding
|
110
|
+
// FunctionPatchabilityStatus statuses; extra array element may
|
111
|
+
// contain general error message. Modifies the current stack and
|
112
|
+
// has restart the lowest found frames and drops all other frames above
|
113
|
+
// if possible and if do_drop is true.
|
114
|
+
static Handle<JSArray> CheckAndDropActivations(
|
115
|
+
Handle<JSArray> shared_info_array, bool do_drop);
|
116
|
+
|
117
|
+
// A copy of this is in liveedit-debugger.js.
|
118
|
+
enum FunctionPatchabilityStatus {
|
119
|
+
FUNCTION_AVAILABLE_FOR_PATCH = 1,
|
120
|
+
FUNCTION_BLOCKED_ON_ACTIVE_STACK = 2,
|
121
|
+
FUNCTION_BLOCKED_ON_OTHER_STACK = 3,
|
122
|
+
FUNCTION_BLOCKED_UNDER_NATIVE_CODE = 4,
|
123
|
+
FUNCTION_REPLACED_ON_ACTIVE_STACK = 5
|
124
|
+
};
|
125
|
+
|
126
|
+
// Compares 2 strings line-by-line and returns diff in form of array of
|
127
|
+
// triplets (pos1, pos1_end, pos2_end) describing list of diff chunks.
|
128
|
+
static Handle<JSArray> CompareStringsLinewise(Handle<String> s1,
|
129
|
+
Handle<String> s2);
|
130
|
+
};
|
131
|
+
|
132
|
+
|
133
|
+
// A general-purpose comparator between 2 arrays.
|
134
|
+
class Comparator {
|
135
|
+
public:
|
136
|
+
|
137
|
+
// Holds 2 arrays of some elements allowing to compare any pair of
|
138
|
+
// element from the first array and element from the second array.
|
139
|
+
class Input {
|
140
|
+
public:
|
141
|
+
virtual int getLength1() = 0;
|
142
|
+
virtual int getLength2() = 0;
|
143
|
+
virtual bool equals(int index1, int index2) = 0;
|
144
|
+
|
145
|
+
protected:
|
146
|
+
virtual ~Input() {}
|
147
|
+
};
|
148
|
+
|
149
|
+
// Receives compare result as a series of chunks.
|
150
|
+
class Output {
|
151
|
+
public:
|
152
|
+
// Puts another chunk in result list. Note that technically speaking
|
153
|
+
// only 3 arguments actually needed with 4th being derivable.
|
154
|
+
virtual void AddChunk(int pos1, int pos2, int len1, int len2) = 0;
|
155
|
+
|
156
|
+
protected:
|
157
|
+
virtual ~Output() {}
|
158
|
+
};
|
159
|
+
|
160
|
+
// Finds the difference between 2 arrays of elements.
|
161
|
+
static void CalculateDifference(Input* input,
|
162
|
+
Output* result_writer);
|
163
|
+
};
|
164
|
+
|
165
|
+
#endif // ENABLE_DEBUGGER_SUPPORT
|
166
|
+
|
167
|
+
|
168
|
+
} } // namespace v8::internal
|
169
|
+
|
170
|
+
#endif /* V*_LIVEEDIT_H_ */
|
@@ -0,0 +1,59 @@
|
|
1
|
+
// Copyright 2006-2009 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_LOG_INL_H_
|
29
|
+
#define V8_LOG_INL_H_
|
30
|
+
|
31
|
+
#include "log.h"
|
32
|
+
#include "cpu-profiler.h"
|
33
|
+
|
34
|
+
namespace v8 {
|
35
|
+
namespace internal {
|
36
|
+
|
37
|
+
#ifdef ENABLE_LOGGING_AND_PROFILING
|
38
|
+
|
39
|
+
Logger::LogEventsAndTags Logger::ToNativeByScript(Logger::LogEventsAndTags tag,
|
40
|
+
Script* script) {
|
41
|
+
if ((tag == FUNCTION_TAG || tag == LAZY_COMPILE_TAG || tag == SCRIPT_TAG)
|
42
|
+
&& script->type()->value() == Script::TYPE_NATIVE) {
|
43
|
+
switch (tag) {
|
44
|
+
case FUNCTION_TAG: return NATIVE_FUNCTION_TAG;
|
45
|
+
case LAZY_COMPILE_TAG: return NATIVE_LAZY_COMPILE_TAG;
|
46
|
+
case SCRIPT_TAG: return NATIVE_SCRIPT_TAG;
|
47
|
+
default: return tag;
|
48
|
+
}
|
49
|
+
} else {
|
50
|
+
return tag;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
#endif // ENABLE_LOGGING_AND_PROFILING
|
55
|
+
|
56
|
+
|
57
|
+
} } // namespace v8::internal
|
58
|
+
|
59
|
+
#endif // V8_LOG_INL_H_
|
@@ -196,6 +196,9 @@ int Log::GetLogLines(int from_pos, char* dest_buf, int max_size) {
|
|
196
196
|
char* end_pos = dest_buf + actual_size - 1;
|
197
197
|
while (end_pos >= dest_buf && *end_pos != '\n') --end_pos;
|
198
198
|
actual_size = static_cast<int>(end_pos - dest_buf + 1);
|
199
|
+
// If the assertion below is hit, it means that there was no line end
|
200
|
+
// found --- something wrong has happened.
|
201
|
+
ASSERT(actual_size > 0);
|
199
202
|
ASSERT(actual_size <= max_size);
|
200
203
|
return actual_size;
|
201
204
|
}
|
@@ -351,15 +354,6 @@ void LogMessageBuilder::WriteToLogFile() {
|
|
351
354
|
}
|
352
355
|
|
353
356
|
|
354
|
-
void LogMessageBuilder::WriteCStringToLogFile(const char* str) {
|
355
|
-
const int len = StrLength(str);
|
356
|
-
const int written = Log::Write(str, len);
|
357
|
-
if (written != len && write_failure_handler != NULL) {
|
358
|
-
write_failure_handler();
|
359
|
-
}
|
360
|
-
}
|
361
|
-
|
362
|
-
|
363
357
|
// Formatting string for back references to the whole line. E.g. "#2" means
|
364
358
|
// "the second line above".
|
365
359
|
const char* LogRecordCompressor::kLineBackwardReferenceFormat = "#%d";
|
@@ -115,7 +115,7 @@ class Log : public AllStatic {
|
|
115
115
|
}
|
116
116
|
|
117
117
|
// Size of buffer used for formatting log messages.
|
118
|
-
static const int kMessageBufferSize =
|
118
|
+
static const int kMessageBufferSize = v8::V8::kMinimumSizeForLogLinesBuffer;
|
119
119
|
|
120
120
|
private:
|
121
121
|
typedef int (*WritePtr)(const char* msg, int length);
|
@@ -268,9 +268,6 @@ class LogMessageBuilder BASE_EMBEDDED {
|
|
268
268
|
// Write the log message to the log file currently opened.
|
269
269
|
void WriteToLogFile();
|
270
270
|
|
271
|
-
// Write a null-terminated string to to the log file currently opened.
|
272
|
-
void WriteCStringToLogFile(const char* str);
|
273
|
-
|
274
271
|
// A handler that is called when Log::Write fails.
|
275
272
|
typedef void (*WriteFailureHandler)();
|
276
273
|
|
@@ -143,30 +143,32 @@ bool Profiler::paused_ = false;
|
|
143
143
|
// StackTracer implementation
|
144
144
|
//
|
145
145
|
void StackTracer::Trace(TickSample* sample) {
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
146
|
+
sample->function = NULL;
|
147
|
+
sample->frames_count = 0;
|
148
|
+
|
149
|
+
if (sample->state == GC) return;
|
150
150
|
|
151
151
|
const Address js_entry_sp = Top::js_entry_sp(Top::GetCurrentThread());
|
152
152
|
if (js_entry_sp == 0) {
|
153
153
|
// Not executing JS now.
|
154
|
-
sample->frames_count = 0;
|
155
154
|
return;
|
156
155
|
}
|
157
156
|
|
157
|
+
const Address functionAddr =
|
158
|
+
sample->fp + JavaScriptFrameConstants::kFunctionOffset;
|
159
|
+
if (SafeStackFrameIterator::IsWithinBounds(sample->sp, js_entry_sp,
|
160
|
+
functionAddr)) {
|
161
|
+
sample->function = Memory::Address_at(functionAddr) - kHeapObjectTag;
|
162
|
+
}
|
163
|
+
|
158
164
|
int i = 0;
|
159
|
-
const Address callback =
|
160
|
-
Logger::current_state_->external_callback() : NULL;
|
165
|
+
const Address callback = VMState::external_callback();
|
161
166
|
if (callback != NULL) {
|
162
167
|
sample->stack[i++] = callback;
|
163
168
|
}
|
164
169
|
|
165
|
-
SafeStackTraceFrameIterator it(
|
166
|
-
|
167
|
-
reinterpret_cast<Address>(sample->sp),
|
168
|
-
reinterpret_cast<Address>(sample->sp),
|
169
|
-
js_entry_sp);
|
170
|
+
SafeStackTraceFrameIterator it(sample->fp, sample->sp,
|
171
|
+
sample->sp, js_entry_sp);
|
170
172
|
while (!it.done() && i < TickSample::kMaxFramesCount) {
|
171
173
|
sample->stack[i++] = it.frame()->pc();
|
172
174
|
it.Advance();
|
@@ -320,12 +322,12 @@ void Profiler::Run() {
|
|
320
322
|
//
|
321
323
|
Ticker* Logger::ticker_ = NULL;
|
322
324
|
Profiler* Logger::profiler_ = NULL;
|
323
|
-
VMState* Logger::current_state_ = NULL;
|
324
|
-
VMState Logger::bottom_state_(EXTERNAL);
|
325
325
|
SlidingStateWindow* Logger::sliding_state_window_ = NULL;
|
326
326
|
const char** Logger::log_events_ = NULL;
|
327
327
|
CompressionHelper* Logger::compression_helper_ = NULL;
|
328
|
-
|
328
|
+
int Logger::logging_nesting_ = 0;
|
329
|
+
int Logger::cpu_profiler_nesting_ = 0;
|
330
|
+
int Logger::heap_profiler_nesting_ = 0;
|
329
331
|
|
330
332
|
#define DECLARE_LONG_EVENT(ignore1, long_name, ignore2) long_name,
|
331
333
|
const char* kLongLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = {
|
@@ -364,15 +366,6 @@ void Logger::LogAliases() {
|
|
364
366
|
#endif // ENABLE_LOGGING_AND_PROFILING
|
365
367
|
|
366
368
|
|
367
|
-
void Logger::Preamble(const char* content) {
|
368
|
-
#ifdef ENABLE_LOGGING_AND_PROFILING
|
369
|
-
if (!Log::IsEnabled() || !FLAG_log_code) return;
|
370
|
-
LogMessageBuilder msg;
|
371
|
-
msg.WriteCStringToLogFile(content);
|
372
|
-
#endif
|
373
|
-
}
|
374
|
-
|
375
|
-
|
376
369
|
void Logger::StringEvent(const char* name, const char* value) {
|
377
370
|
#ifdef ENABLE_LOGGING_AND_PROFILING
|
378
371
|
if (FLAG_log) UncheckedStringEvent(name, value);
|
@@ -392,12 +385,19 @@ void Logger::UncheckedStringEvent(const char* name, const char* value) {
|
|
392
385
|
|
393
386
|
void Logger::IntEvent(const char* name, int value) {
|
394
387
|
#ifdef ENABLE_LOGGING_AND_PROFILING
|
395
|
-
if (
|
388
|
+
if (FLAG_log) UncheckedIntEvent(name, value);
|
389
|
+
#endif
|
390
|
+
}
|
391
|
+
|
392
|
+
|
393
|
+
#ifdef ENABLE_LOGGING_AND_PROFILING
|
394
|
+
void Logger::UncheckedIntEvent(const char* name, int value) {
|
395
|
+
if (!Log::IsEnabled()) return;
|
396
396
|
LogMessageBuilder msg;
|
397
397
|
msg.Append("%s,%d\n", name, value);
|
398
398
|
msg.WriteToLogFile();
|
399
|
-
#endif
|
400
399
|
}
|
400
|
+
#endif
|
401
401
|
|
402
402
|
|
403
403
|
void Logger::HandleEvent(const char* name, Object** location) {
|
@@ -837,10 +837,77 @@ void Logger::RegExpCodeCreateEvent(Code* code, String* source) {
|
|
837
837
|
|
838
838
|
void Logger::CodeMoveEvent(Address from, Address to) {
|
839
839
|
#ifdef ENABLE_LOGGING_AND_PROFILING
|
840
|
+
MoveEventInternal(CODE_MOVE_EVENT, from, to);
|
841
|
+
#endif
|
842
|
+
}
|
843
|
+
|
844
|
+
|
845
|
+
void Logger::CodeDeleteEvent(Address from) {
|
846
|
+
#ifdef ENABLE_LOGGING_AND_PROFILING
|
847
|
+
DeleteEventInternal(CODE_DELETE_EVENT, from);
|
848
|
+
#endif
|
849
|
+
}
|
850
|
+
|
851
|
+
|
852
|
+
void Logger::SnapshotPositionEvent(Address addr, int pos) {
|
853
|
+
#ifdef ENABLE_LOGGING_AND_PROFILING
|
854
|
+
if (!Log::IsEnabled() || !FLAG_log_snapshot_positions) return;
|
855
|
+
LogMessageBuilder msg;
|
856
|
+
msg.Append("%s,", log_events_[SNAPSHOT_POSITION_EVENT]);
|
857
|
+
msg.AppendAddress(addr);
|
858
|
+
msg.Append(",%d", pos);
|
859
|
+
if (FLAG_compress_log) {
|
860
|
+
ASSERT(compression_helper_ != NULL);
|
861
|
+
if (!compression_helper_->HandleMessage(&msg)) return;
|
862
|
+
}
|
863
|
+
msg.Append('\n');
|
864
|
+
msg.WriteToLogFile();
|
865
|
+
#endif
|
866
|
+
}
|
867
|
+
|
868
|
+
|
869
|
+
void Logger::FunctionCreateEvent(JSFunction* function) {
|
870
|
+
#ifdef ENABLE_LOGGING_AND_PROFILING
|
871
|
+
static Address prev_code = NULL;
|
872
|
+
if (!Log::IsEnabled() || !FLAG_log_code) return;
|
873
|
+
LogMessageBuilder msg;
|
874
|
+
msg.Append("%s,", log_events_[FUNCTION_CREATION_EVENT]);
|
875
|
+
msg.AppendAddress(function->address());
|
876
|
+
msg.Append(',');
|
877
|
+
msg.AppendAddress(function->code()->address(), prev_code);
|
878
|
+
prev_code = function->code()->address();
|
879
|
+
if (FLAG_compress_log) {
|
880
|
+
ASSERT(compression_helper_ != NULL);
|
881
|
+
if (!compression_helper_->HandleMessage(&msg)) return;
|
882
|
+
}
|
883
|
+
msg.Append('\n');
|
884
|
+
msg.WriteToLogFile();
|
885
|
+
#endif
|
886
|
+
}
|
887
|
+
|
888
|
+
|
889
|
+
void Logger::FunctionMoveEvent(Address from, Address to) {
|
890
|
+
#ifdef ENABLE_LOGGING_AND_PROFILING
|
891
|
+
MoveEventInternal(FUNCTION_MOVE_EVENT, from, to);
|
892
|
+
#endif
|
893
|
+
}
|
894
|
+
|
895
|
+
|
896
|
+
void Logger::FunctionDeleteEvent(Address from) {
|
897
|
+
#ifdef ENABLE_LOGGING_AND_PROFILING
|
898
|
+
DeleteEventInternal(FUNCTION_DELETE_EVENT, from);
|
899
|
+
#endif
|
900
|
+
}
|
901
|
+
|
902
|
+
|
903
|
+
#ifdef ENABLE_LOGGING_AND_PROFILING
|
904
|
+
void Logger::MoveEventInternal(LogEventsAndTags event,
|
905
|
+
Address from,
|
906
|
+
Address to) {
|
840
907
|
static Address prev_to_ = NULL;
|
841
908
|
if (!Log::IsEnabled() || !FLAG_log_code) return;
|
842
909
|
LogMessageBuilder msg;
|
843
|
-
msg.Append("%s,", log_events_[
|
910
|
+
msg.Append("%s,", log_events_[event]);
|
844
911
|
msg.AppendAddress(from);
|
845
912
|
msg.Append(',');
|
846
913
|
msg.AppendAddress(to, prev_to_);
|
@@ -851,15 +918,15 @@ void Logger::CodeMoveEvent(Address from, Address to) {
|
|
851
918
|
}
|
852
919
|
msg.Append('\n');
|
853
920
|
msg.WriteToLogFile();
|
854
|
-
#endif
|
855
921
|
}
|
922
|
+
#endif
|
856
923
|
|
857
924
|
|
858
|
-
void Logger::CodeDeleteEvent(Address from) {
|
859
925
|
#ifdef ENABLE_LOGGING_AND_PROFILING
|
926
|
+
void Logger::DeleteEventInternal(LogEventsAndTags event, Address from) {
|
860
927
|
if (!Log::IsEnabled() || !FLAG_log_code) return;
|
861
928
|
LogMessageBuilder msg;
|
862
|
-
msg.Append("%s,", log_events_[
|
929
|
+
msg.Append("%s,", log_events_[event]);
|
863
930
|
msg.AppendAddress(from);
|
864
931
|
if (FLAG_compress_log) {
|
865
932
|
ASSERT(compression_helper_ != NULL);
|
@@ -867,8 +934,8 @@ void Logger::CodeDeleteEvent(Address from) {
|
|
867
934
|
}
|
868
935
|
msg.Append('\n');
|
869
936
|
msg.WriteToLogFile();
|
870
|
-
#endif
|
871
937
|
}
|
938
|
+
#endif
|
872
939
|
|
873
940
|
|
874
941
|
void Logger::ResourceEvent(const char* name, const char* tag) {
|
@@ -1052,13 +1119,17 @@ void Logger::DebugEvent(const char* event_type, Vector<uint16_t> parameter) {
|
|
1052
1119
|
void Logger::TickEvent(TickSample* sample, bool overflow) {
|
1053
1120
|
if (!Log::IsEnabled() || !FLAG_prof) return;
|
1054
1121
|
static Address prev_sp = NULL;
|
1122
|
+
static Address prev_function = NULL;
|
1055
1123
|
LogMessageBuilder msg;
|
1056
1124
|
msg.Append("%s,", log_events_[TICK_EVENT]);
|
1057
|
-
Address prev_addr =
|
1125
|
+
Address prev_addr = sample->pc;
|
1058
1126
|
msg.AppendAddress(prev_addr);
|
1059
1127
|
msg.Append(',');
|
1060
|
-
msg.AppendAddress(
|
1061
|
-
prev_sp =
|
1128
|
+
msg.AppendAddress(sample->sp, prev_sp);
|
1129
|
+
prev_sp = sample->sp;
|
1130
|
+
msg.Append(',');
|
1131
|
+
msg.AppendAddress(sample->function, prev_function);
|
1132
|
+
prev_function = sample->function;
|
1062
1133
|
msg.Append(",%d", static_cast<int>(sample->state));
|
1063
1134
|
if (overflow) {
|
1064
1135
|
msg.Append(",overflow");
|
@@ -1089,52 +1160,60 @@ int Logger::GetActiveProfilerModules() {
|
|
1089
1160
|
}
|
1090
1161
|
|
1091
1162
|
|
1092
|
-
void Logger::PauseProfiler(int flags) {
|
1163
|
+
void Logger::PauseProfiler(int flags, int tag) {
|
1093
1164
|
if (!Log::IsEnabled()) return;
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1165
|
+
if (flags & PROFILER_MODULE_CPU) {
|
1166
|
+
// It is OK to have negative nesting.
|
1167
|
+
if (--cpu_profiler_nesting_ == 0) {
|
1168
|
+
profiler_->pause();
|
1169
|
+
if (FLAG_prof_lazy) {
|
1170
|
+
if (!FLAG_sliding_state_window) ticker_->Stop();
|
1171
|
+
FLAG_log_code = false;
|
1172
|
+
// Must be the same message as Log::kDynamicBufferSeal.
|
1173
|
+
LOG(UncheckedStringEvent("profiler", "pause"));
|
1174
|
+
}
|
1175
|
+
--logging_nesting_;
|
1105
1176
|
}
|
1106
1177
|
}
|
1107
|
-
if (
|
1178
|
+
if (flags &
|
1108
1179
|
(PROFILER_MODULE_HEAP_STATS | PROFILER_MODULE_JS_CONSTRUCTORS)) {
|
1109
|
-
|
1180
|
+
if (--heap_profiler_nesting_ == 0) {
|
1181
|
+
FLAG_log_gc = false;
|
1182
|
+
--logging_nesting_;
|
1183
|
+
}
|
1110
1184
|
}
|
1111
|
-
|
1112
|
-
|
1113
|
-
is_logging_ = false;
|
1185
|
+
if (tag != 0) {
|
1186
|
+
UncheckedIntEvent("close-tag", tag);
|
1114
1187
|
}
|
1115
1188
|
}
|
1116
1189
|
|
1117
1190
|
|
1118
|
-
void Logger::ResumeProfiler(int flags) {
|
1191
|
+
void Logger::ResumeProfiler(int flags, int tag) {
|
1119
1192
|
if (!Log::IsEnabled()) return;
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
1193
|
+
if (tag != 0) {
|
1194
|
+
UncheckedIntEvent("open-tag", tag);
|
1195
|
+
}
|
1196
|
+
if (flags & PROFILER_MODULE_CPU) {
|
1197
|
+
if (cpu_profiler_nesting_++ == 0) {
|
1198
|
+
++logging_nesting_;
|
1199
|
+
if (FLAG_prof_lazy) {
|
1200
|
+
profiler_->Engage();
|
1201
|
+
LOG(UncheckedStringEvent("profiler", "resume"));
|
1202
|
+
FLAG_log_code = true;
|
1203
|
+
LogCompiledFunctions();
|
1204
|
+
LogFunctionObjects();
|
1205
|
+
LogAccessorCallbacks();
|
1206
|
+
if (!FLAG_sliding_state_window) ticker_->Start();
|
1207
|
+
}
|
1208
|
+
profiler_->resume();
|
1132
1209
|
}
|
1133
|
-
profiler_->resume();
|
1134
1210
|
}
|
1135
|
-
if (
|
1211
|
+
if (flags &
|
1136
1212
|
(PROFILER_MODULE_HEAP_STATS | PROFILER_MODULE_JS_CONSTRUCTORS)) {
|
1137
|
-
|
1213
|
+
if (heap_profiler_nesting_++ == 0) {
|
1214
|
+
++logging_nesting_;
|
1215
|
+
FLAG_log_gc = true;
|
1216
|
+
}
|
1138
1217
|
}
|
1139
1218
|
}
|
1140
1219
|
|
@@ -1143,7 +1222,7 @@ void Logger::ResumeProfiler(int flags) {
|
|
1143
1222
|
// either from main or Profiler's thread.
|
1144
1223
|
void Logger::StopLoggingAndProfiling() {
|
1145
1224
|
Log::stop();
|
1146
|
-
PauseProfiler(PROFILER_MODULE_CPU);
|
1225
|
+
PauseProfiler(PROFILER_MODULE_CPU, 0);
|
1147
1226
|
}
|
1148
1227
|
|
1149
1228
|
|
@@ -1161,9 +1240,7 @@ static int EnumerateCompiledFunctions(Handle<SharedFunctionInfo>* sfis) {
|
|
1161
1240
|
AssertNoAllocation no_alloc;
|
1162
1241
|
int compiled_funcs_count = 0;
|
1163
1242
|
HeapIterator iterator;
|
1164
|
-
|
1165
|
-
HeapObject* obj = iterator.next();
|
1166
|
-
ASSERT(obj != NULL);
|
1243
|
+
for (HeapObject* obj = iterator.next(); obj != NULL; obj = iterator.next()) {
|
1167
1244
|
if (!obj->IsSharedFunctionInfo()) continue;
|
1168
1245
|
SharedFunctionInfo* sfi = SharedFunctionInfo::cast(obj);
|
1169
1246
|
if (sfi->is_compiled()
|
@@ -1186,8 +1263,12 @@ void Logger::LogCodeObject(Object* object) {
|
|
1186
1263
|
switch (code_object->kind()) {
|
1187
1264
|
case Code::FUNCTION:
|
1188
1265
|
return; // We log this later using LogCompiledFunctions.
|
1266
|
+
case Code::BINARY_OP_IC:
|
1267
|
+
// fall through
|
1189
1268
|
case Code::STUB:
|
1190
|
-
description = CodeStub::MajorName(code_object->major_key());
|
1269
|
+
description = CodeStub::MajorName(code_object->major_key(), true);
|
1270
|
+
if (description == NULL)
|
1271
|
+
description = "A stub from the snapshot";
|
1191
1272
|
tag = Logger::STUB_TAG;
|
1192
1273
|
break;
|
1193
1274
|
case Code::BUILTIN:
|
@@ -1215,7 +1296,16 @@ void Logger::LogCodeObject(Object* object) {
|
|
1215
1296
|
tag = Logger::CALL_IC_TAG;
|
1216
1297
|
break;
|
1217
1298
|
}
|
1218
|
-
|
1299
|
+
PROFILE(CodeCreateEvent(tag, code_object, description));
|
1300
|
+
}
|
1301
|
+
}
|
1302
|
+
|
1303
|
+
|
1304
|
+
void Logger::LogCodeObjects() {
|
1305
|
+
AssertNoAllocation no_alloc;
|
1306
|
+
HeapIterator iterator;
|
1307
|
+
for (HeapObject* obj = iterator.next(); obj != NULL; obj = iterator.next()) {
|
1308
|
+
if (obj->IsCode()) LogCodeObject(obj);
|
1219
1309
|
}
|
1220
1310
|
}
|
1221
1311
|
|
@@ -1240,31 +1330,33 @@ void Logger::LogCompiledFunctions() {
|
|
1240
1330
|
Handle<String> script_name(String::cast(script->name()));
|
1241
1331
|
int line_num = GetScriptLineNumber(script, shared->start_position());
|
1242
1332
|
if (line_num > 0) {
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1333
|
+
PROFILE(CodeCreateEvent(
|
1334
|
+
Logger::ToNativeByScript(Logger::LAZY_COMPILE_TAG, *script),
|
1335
|
+
shared->code(), *func_name,
|
1336
|
+
*script_name, line_num + 1));
|
1246
1337
|
} else {
|
1247
|
-
// Can't distinguish
|
1248
|
-
|
1249
|
-
|
1338
|
+
// Can't distinguish eval and script here, so always use Script.
|
1339
|
+
PROFILE(CodeCreateEvent(
|
1340
|
+
Logger::ToNativeByScript(Logger::SCRIPT_TAG, *script),
|
1341
|
+
shared->code(), *script_name));
|
1250
1342
|
}
|
1251
1343
|
} else {
|
1252
|
-
|
1253
|
-
Logger::LAZY_COMPILE_TAG,
|
1344
|
+
PROFILE(CodeCreateEvent(
|
1345
|
+
Logger::ToNativeByScript(Logger::LAZY_COMPILE_TAG, *script),
|
1346
|
+
shared->code(), *func_name));
|
1254
1347
|
}
|
1255
|
-
} else if (shared->
|
1348
|
+
} else if (shared->IsApiFunction()) {
|
1256
1349
|
// API function.
|
1257
|
-
FunctionTemplateInfo* fun_data =
|
1258
|
-
FunctionTemplateInfo::cast(shared->function_data());
|
1350
|
+
FunctionTemplateInfo* fun_data = shared->get_api_func_data();
|
1259
1351
|
Object* raw_call_data = fun_data->call_code();
|
1260
1352
|
if (!raw_call_data->IsUndefined()) {
|
1261
1353
|
CallHandlerInfo* call_data = CallHandlerInfo::cast(raw_call_data);
|
1262
1354
|
Object* callback_obj = call_data->callback();
|
1263
1355
|
Address entry_point = v8::ToCData<Address>(callback_obj);
|
1264
|
-
|
1356
|
+
PROFILE(CallbackEvent(*func_name, entry_point));
|
1265
1357
|
}
|
1266
1358
|
} else {
|
1267
|
-
|
1359
|
+
PROFILE(CodeCreateEvent(
|
1268
1360
|
Logger::LAZY_COMPILE_TAG, shared->code(), *func_name));
|
1269
1361
|
}
|
1270
1362
|
}
|
@@ -1273,23 +1365,33 @@ void Logger::LogCompiledFunctions() {
|
|
1273
1365
|
}
|
1274
1366
|
|
1275
1367
|
|
1368
|
+
void Logger::LogFunctionObjects() {
|
1369
|
+
AssertNoAllocation no_alloc;
|
1370
|
+
HeapIterator iterator;
|
1371
|
+
for (HeapObject* obj = iterator.next(); obj != NULL; obj = iterator.next()) {
|
1372
|
+
if (!obj->IsJSFunction()) continue;
|
1373
|
+
JSFunction* jsf = JSFunction::cast(obj);
|
1374
|
+
if (!jsf->is_compiled()) continue;
|
1375
|
+
PROFILE(FunctionCreateEvent(jsf));
|
1376
|
+
}
|
1377
|
+
}
|
1378
|
+
|
1379
|
+
|
1276
1380
|
void Logger::LogAccessorCallbacks() {
|
1277
1381
|
AssertNoAllocation no_alloc;
|
1278
1382
|
HeapIterator iterator;
|
1279
|
-
|
1280
|
-
HeapObject* obj = iterator.next();
|
1281
|
-
ASSERT(obj != NULL);
|
1383
|
+
for (HeapObject* obj = iterator.next(); obj != NULL; obj = iterator.next()) {
|
1282
1384
|
if (!obj->IsAccessorInfo()) continue;
|
1283
1385
|
AccessorInfo* ai = AccessorInfo::cast(obj);
|
1284
1386
|
if (!ai->name()->IsString()) continue;
|
1285
1387
|
String* name = String::cast(ai->name());
|
1286
1388
|
Address getter_entry = v8::ToCData<Address>(ai->getter());
|
1287
1389
|
if (getter_entry != 0) {
|
1288
|
-
|
1390
|
+
PROFILE(GetterCallbackEvent(name, getter_entry));
|
1289
1391
|
}
|
1290
1392
|
Address setter_entry = v8::ToCData<Address>(ai->setter());
|
1291
1393
|
if (setter_entry != 0) {
|
1292
|
-
|
1394
|
+
PROFILE(SetterCallbackEvent(name, setter_entry));
|
1293
1395
|
}
|
1294
1396
|
}
|
1295
1397
|
}
|
@@ -1372,7 +1474,7 @@ bool Logger::Setup() {
|
|
1372
1474
|
}
|
1373
1475
|
}
|
1374
1476
|
|
1375
|
-
|
1477
|
+
ASSERT(VMState::is_outermost_external());
|
1376
1478
|
|
1377
1479
|
ticker_ = new Ticker(kSamplingIntervalMs);
|
1378
1480
|
|
@@ -1386,14 +1488,16 @@ bool Logger::Setup() {
|
|
1386
1488
|
compression_helper_ = new CompressionHelper(kCompressionWindowSize);
|
1387
1489
|
}
|
1388
1490
|
|
1389
|
-
|
1491
|
+
if (start_logging) {
|
1492
|
+
logging_nesting_ = 1;
|
1493
|
+
}
|
1390
1494
|
|
1391
1495
|
if (FLAG_prof) {
|
1392
1496
|
profiler_ = new Profiler();
|
1393
1497
|
if (!FLAG_prof_auto) {
|
1394
1498
|
profiler_->pause();
|
1395
1499
|
} else {
|
1396
|
-
|
1500
|
+
logging_nesting_ = 1;
|
1397
1501
|
}
|
1398
1502
|
if (!FLAG_prof_lazy) {
|
1399
1503
|
profiler_->Engage();
|
@@ -1453,5 +1557,4 @@ void Logger::EnableSlidingStateWindow() {
|
|
1453
1557
|
#endif
|
1454
1558
|
}
|
1455
1559
|
|
1456
|
-
|
1457
1560
|
} } // namespace v8::internal
|