therubyracer 0.7.4 → 0.7.5
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/History.txt +11 -0
- data/Rakefile +1 -1
- data/ext/v8/extconf.rb +0 -18
- data/ext/v8/rr.cpp +2 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/AUTHORS +1 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/ChangeLog +239 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/LICENSE +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/SConstruct +29 -17
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8-debug.h +61 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8-profiler.h +182 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8.h +458 -257
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/SConscript +2 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/accessors.cc +2 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/accessors.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/allocation.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/allocation.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/api.cc +574 -30
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/api.h +12 -10
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/apinatives.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/apiutils.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arguments.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm-inl.h +38 -15
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm.cc +646 -101
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm.h +174 -15
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/builtins-arm.cc +56 -47
- data/ext/v8/upstream/2.3.3/src/arm/codegen-arm-inl.h +48 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/codegen-arm.cc +2957 -1448
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/codegen-arm.h +230 -74
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/constants-arm.cc +25 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/constants-arm.h +16 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/cpu-arm.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/debug-arm.cc +76 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/disasm-arm.cc +168 -20
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/fast-codegen-arm.cc +5 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/frames-arm.cc +4 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/frames-arm.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/full-codegen-arm.cc +1558 -248
- data/ext/v8/upstream/2.3.3/src/arm/ic-arm.cc +2258 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/jump-target-arm.cc +55 -103
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/macro-assembler-arm.cc +358 -185
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/macro-assembler-arm.h +136 -41
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/regexp-macro-assembler-arm.cc +26 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/regexp-macro-assembler-arm.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/simulator-arm.cc +203 -22
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/simulator-arm.h +7 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/stub-cache-arm.cc +531 -324
- data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm-inl.h +59 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/virtual-frame-arm.cc +247 -81
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/virtual-frame-arm.h +99 -83
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/array.js +2 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/assembler.cc +6 -13
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/assembler.h +36 -10
- data/ext/v8/upstream/2.3.3/src/ast-inl.h +81 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ast.cc +14 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ast.h +20 -35
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bootstrapper.cc +32 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bootstrapper.h +0 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/builtins.cc +50 -33
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/builtins.h +2 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bytecodes-irregexp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cached-powers.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/char-predicates-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/char-predicates.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/checks.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/checks.h +8 -6
- data/ext/v8/upstream/2.3.3/src/circular-queue-inl.h +53 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/circular-queue.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/circular-queue.h +0 -26
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code-stubs.cc +2 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code-stubs.h +1 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen.cc +44 -13
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen.h +310 -31
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compilation-cache.cc +28 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compilation-cache.h +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compiler.cc +45 -14
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compiler.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/contexts.cc +11 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/contexts.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions.cc +25 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/counters.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/counters.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler-inl.h +2 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler.cc +68 -24
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler.h +19 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-debug.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-debug.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-posix.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-readline.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-windows.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.js +55 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/data-flow.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/data-flow.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/date.js +68 -137
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser.cc +2 -8
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-agent.cc +3 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-agent.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-debugger.js +81 -23
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug.cc +275 -81
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug.h +85 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disasm.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disassembler.cc +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disassembler.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/diy-fp.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/diy-fp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/double.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dtoa-config.c +0 -0
- data/ext/v8/upstream/2.3.3/src/dtoa.cc +77 -0
- data/ext/v8/upstream/2.3.3/src/dtoa.h +81 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/execution.cc +111 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/execution.h +12 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/factory.cc +25 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/factory.h +16 -9
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-codegen.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-codegen.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-dtoa.cc +2 -9
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-dtoa.h +1 -2
- data/ext/v8/upstream/2.3.3/src/fixed-dtoa.cc +405 -0
- data/ext/v8/upstream/{2.1.10/src/jump-target-light.cc → 2.3.3/src/fixed-dtoa.h} +22 -53
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flag-definitions.h +14 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flags.cc +5 -9
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flags.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flow-graph.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flow-graph.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frame-element.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frame-element.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames.cc +5 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames.h +1 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/full-codegen.cc +387 -20
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/full-codegen.h +102 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/func-name-inferrer.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/func-name-inferrer.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/global-handles.cc +8 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/global-handles.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/globals.h +44 -7
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles.cc +19 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles.h +8 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/hashmap.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/hashmap.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-inl.h +56 -14
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-profiler.cc +85 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-profiler.h +45 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap.cc +994 -396
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap.h +220 -65
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32-inl.h +41 -12
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32.cc +94 -24
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32.h +32 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/builtins-ia32.cc +42 -30
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32.cc +1758 -916
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32.h +67 -74
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/cpu-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/debug-ia32.cc +46 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/disasm-ia32.cc +37 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/fast-codegen-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/fast-codegen-ia32.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/frames-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/frames-ia32.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/full-codegen-ia32.cc +1465 -198
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/ic-ia32.cc +688 -367
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/jump-target-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/macro-assembler-ia32.cc +82 -180
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/macro-assembler-ia32.h +41 -25
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/regexp-macro-assembler-ia32.cc +68 -24
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/regexp-macro-assembler-ia32.h +1 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/simulator-ia32.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/simulator-ia32.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/stub-cache-ia32.cc +649 -302
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/virtual-frame-ia32.cc +23 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/virtual-frame-ia32.h +18 -27
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic-inl.h +30 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic.cc +384 -66
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic.h +65 -24
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/interpreter-irregexp.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/interpreter-irregexp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/json.js +3 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jsregexp.cc +20 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jsregexp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-heavy-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-heavy.cc +79 -13
- data/ext/v8/upstream/{2.1.10/src/jump-target.h → 2.3.3/src/jump-target-heavy.h} +5 -47
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-light-inl.h +16 -2
- data/ext/v8/upstream/2.3.3/src/jump-target-light.cc +110 -0
- data/ext/v8/upstream/2.3.3/src/jump-target-light.h +192 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target.cc +0 -64
- data/ext/v8/upstream/2.3.3/src/jump-target.h +90 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/list-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/list.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit-debugger.js +141 -28
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit.cc +19 -7
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-utils.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-utils.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log.cc +12 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log.h +12 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/macro-assembler.h +0 -16
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/macros.py +21 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mark-compact.cc +120 -109
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mark-compact.h +25 -37
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/math.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/memory.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.cc +8 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.h +2 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.js +15 -7
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips.cc +12 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips.h +4 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/builtins-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips.cc +9 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips.h +1 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/constants-mips.cc +5 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/constants-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/cpu-mips.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/debug-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/disasm-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/fast-codegen-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/frames-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/frames-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/full-codegen-mips.cc +5 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/ic-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/jump-target-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/macro-assembler-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/macro-assembler-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/simulator-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/simulator-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/stub-cache-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/virtual-frame-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/virtual-frame-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mirror-debugger.js +46 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mksnapshot.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/natives.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects-debug.cc +8 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects-inl.h +235 -62
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects.cc +497 -231
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects.h +355 -149
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/oprofile-agent.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/oprofile-agent.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/parser.cc +31 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/parser.h +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-freebsd.cc +9 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-linux.cc +26 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-macos.cc +11 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-nullos.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-openbsd.cc +6 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-posix.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-solaris.cc +69 -23
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-win32.cc +15 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform.h +10 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/powers-ten.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/prettyprinter.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/prettyprinter.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/profile-generator-inl.h +26 -2
- data/ext/v8/upstream/2.3.3/src/profile-generator.cc +1830 -0
- data/ext/v8/upstream/2.3.3/src/profile-generator.h +853 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/property.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/property.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-tracer.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-tracer.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler.cc +1 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-stack.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-stack.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp.js +25 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator.cc +4 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/rewriter.cc +85 -8
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/rewriter.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.cc +547 -221
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.h +5 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.js +23 -31
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scanner.cc +12 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scanner.h +60 -53
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopeinfo.cc +156 -168
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopeinfo.h +58 -62
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopes.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopes.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/serialize.cc +320 -242
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/serialize.h +81 -48
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/shell.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/simulator.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/smart-pointer.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot-common.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot-empty.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces-inl.h +177 -74
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces.cc +138 -315
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces.h +155 -124
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/splay-tree-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/splay-tree.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string-stream.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string-stream.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string.js +113 -119
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/stub-cache.cc +242 -97
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/stub-cache.h +118 -55
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/dtoa/COPYING +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/dtoa/dtoa.c +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/valgrind/valgrind.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/token.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/token.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/top.cc +107 -26
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/top.h +9 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/type-info.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/type-info.h +2 -2
- data/ext/v8/upstream/2.3.3/src/unbound-queue-inl.h +95 -0
- data/ext/v8/upstream/2.3.3/src/unbound-queue.h +67 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/uri.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/utils.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/utils.h +83 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8-counters.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8-counters.h +20 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8.cc +5 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8.h +0 -0
- data/ext/v8/upstream/2.3.3/src/v8dll-main.cc +39 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8natives.js +210 -33
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8threads.cc +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8threads.h +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/variables.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/variables.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/version.cc +3 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/version.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-heavy-inl.h +40 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-heavy.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-light-inl.h +106 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-light.cc +4 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state-inl.h +6 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state.cc +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state.h +6 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64-inl.h +42 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64.cc +285 -53
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64.h +54 -18
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/builtins-x64.cc +31 -33
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64.cc +9787 -8722
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64.h +82 -47
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/cpu-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/debug-x64.cc +55 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/disasm-x64.cc +42 -19
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/fast-codegen-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/frames-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/frames-x64.h +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/full-codegen-x64.cc +1487 -210
- data/ext/v8/upstream/2.3.3/src/x64/ic-x64.cc +1907 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/jump-target-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/macro-assembler-x64.cc +366 -338
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/macro-assembler-x64.h +83 -38
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/regexp-macro-assembler-x64.cc +82 -23
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/regexp-macro-assembler-x64.h +1 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64-inl.h +6 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64.h +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/simulator-x64.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/simulator-x64.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/stub-cache-x64.cc +556 -377
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/virtual-frame-x64.cc +197 -98
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/virtual-frame-x64.h +37 -28
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/codemap.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/consarray.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/csvparser.js +0 -0
- data/ext/v8/upstream/2.3.3/tools/gc-nvp-trace-processor.py +317 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/generate-ten-powers.scm +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/gyp/v8.gyp +87 -20
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/js2c.py +19 -15
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/jsmin.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/linux-tick-processor +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/linux-tick-processor.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/logreader.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/mac-nm +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/mac-tick-processor +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/annotate +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/common +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/dump +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/report +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/reset +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/run +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/shutdown +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/start +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/presubmit.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/process-heap-prof.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/profile.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/profile_view.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/run-valgrind.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/splaytree.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/splaytree.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/stats-viewer.py +25 -13
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/test.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor-driver.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/utils.py +0 -0
- data/ext/v8/upstream/2.3.3/tools/v8.xcodeproj/project.pbxproj +1855 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/README.txt +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/arm.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/common.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8js2c.cmd +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/debug.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/ia32.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/js2c.cmd +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/release.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8.sln +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_arm.sln +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base.vcproj +40 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base_arm.vcproj +20 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base_x64.vcproj +16 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest.vcproj +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_mksnapshot.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_x64.sln +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/x64.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/windows-tick-processor.bat +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/windows-tick-processor.py +0 -0
- data/ext/v8/upstream/Makefile +1 -1
- data/ext/v8/v8_template.cpp +94 -2
- data/ext/v8/v8_try_catch.cpp +2 -2
- data/lib/v8.rb +1 -1
- data/lib/v8/access.rb +93 -40
- data/lib/v8/cli.rb +1 -1
- data/lib/v8/function.rb +14 -2
- data/spec/redjs/jsapi_spec.rb +231 -42
- data/therubyracer.gemspec +3 -3
- metadata +463 -453
- data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2-inl.h +0 -263
- data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2.cc +0 -1878
- data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2.h +0 -1036
- data/ext/v8/upstream/2.1.10/src/arm/codegen-arm-inl.h +0 -72
- data/ext/v8/upstream/2.1.10/src/arm/ic-arm.cc +0 -1833
- data/ext/v8/upstream/2.1.10/src/circular-queue-inl.h +0 -101
- data/ext/v8/upstream/2.1.10/src/profile-generator.cc +0 -583
- data/ext/v8/upstream/2.1.10/src/profile-generator.h +0 -364
- data/ext/v8/upstream/2.1.10/src/x64/ic-x64.cc +0 -1621
@@ -1,101 +0,0 @@
|
|
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_CIRCULAR_BUFFER_INL_H_
|
29
|
-
#define V8_CIRCULAR_BUFFER_INL_H_
|
30
|
-
|
31
|
-
#include "circular-queue.h"
|
32
|
-
|
33
|
-
namespace v8 {
|
34
|
-
namespace internal {
|
35
|
-
|
36
|
-
|
37
|
-
template<typename Record>
|
38
|
-
CircularQueue<Record>::CircularQueue(int desired_buffer_size_in_bytes)
|
39
|
-
: buffer_(NewArray<Record>(desired_buffer_size_in_bytes / sizeof(Record))),
|
40
|
-
buffer_end_(buffer_ + desired_buffer_size_in_bytes / sizeof(Record)),
|
41
|
-
enqueue_semaphore_(
|
42
|
-
OS::CreateSemaphore(static_cast<int>(buffer_end_ - buffer_) - 1)),
|
43
|
-
enqueue_pos_(buffer_),
|
44
|
-
dequeue_pos_(buffer_) {
|
45
|
-
// To be able to distinguish between a full and an empty queue
|
46
|
-
// state, the queue must be capable of containing at least 2
|
47
|
-
// records.
|
48
|
-
ASSERT((buffer_end_ - buffer_) >= 2);
|
49
|
-
}
|
50
|
-
|
51
|
-
|
52
|
-
template<typename Record>
|
53
|
-
CircularQueue<Record>::~CircularQueue() {
|
54
|
-
DeleteArray(buffer_);
|
55
|
-
delete enqueue_semaphore_;
|
56
|
-
}
|
57
|
-
|
58
|
-
|
59
|
-
template<typename Record>
|
60
|
-
void CircularQueue<Record>::Dequeue(Record* rec) {
|
61
|
-
ASSERT(!IsEmpty());
|
62
|
-
*rec = *dequeue_pos_;
|
63
|
-
dequeue_pos_ = Next(dequeue_pos_);
|
64
|
-
// Tell we have a spare record.
|
65
|
-
enqueue_semaphore_->Signal();
|
66
|
-
}
|
67
|
-
|
68
|
-
|
69
|
-
template<typename Record>
|
70
|
-
void CircularQueue<Record>::Enqueue(const Record& rec) {
|
71
|
-
// Wait until we have at least one spare record.
|
72
|
-
enqueue_semaphore_->Wait();
|
73
|
-
ASSERT(Next(enqueue_pos_) != dequeue_pos_);
|
74
|
-
*enqueue_pos_ = rec;
|
75
|
-
enqueue_pos_ = Next(enqueue_pos_);
|
76
|
-
}
|
77
|
-
|
78
|
-
|
79
|
-
template<typename Record>
|
80
|
-
Record* CircularQueue<Record>::Next(Record* curr) {
|
81
|
-
return ++curr != buffer_end_ ? curr : buffer_;
|
82
|
-
}
|
83
|
-
|
84
|
-
|
85
|
-
void* SamplingCircularQueue::Enqueue() {
|
86
|
-
WrapPositionIfNeeded(&producer_pos_->enqueue_pos);
|
87
|
-
void* result = producer_pos_->enqueue_pos;
|
88
|
-
producer_pos_->enqueue_pos += record_size_;
|
89
|
-
return result;
|
90
|
-
}
|
91
|
-
|
92
|
-
|
93
|
-
void SamplingCircularQueue::WrapPositionIfNeeded(
|
94
|
-
SamplingCircularQueue::Cell** pos) {
|
95
|
-
if (**pos == kEnd) *pos = buffer_;
|
96
|
-
}
|
97
|
-
|
98
|
-
|
99
|
-
} } // namespace v8::internal
|
100
|
-
|
101
|
-
#endif // V8_CIRCULAR_BUFFER_INL_H_
|
@@ -1,583 +0,0 @@
|
|
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
|
-
#ifdef ENABLE_LOGGING_AND_PROFILING
|
29
|
-
|
30
|
-
#include "v8.h"
|
31
|
-
|
32
|
-
#include "profile-generator-inl.h"
|
33
|
-
|
34
|
-
#include "../include/v8-profiler.h"
|
35
|
-
|
36
|
-
namespace v8 {
|
37
|
-
namespace internal {
|
38
|
-
|
39
|
-
|
40
|
-
const char* CodeEntry::kEmptyNamePrefix = "";
|
41
|
-
unsigned CodeEntry::next_call_uid_ = 1;
|
42
|
-
|
43
|
-
|
44
|
-
ProfileNode* ProfileNode::FindChild(CodeEntry* entry) {
|
45
|
-
HashMap::Entry* map_entry =
|
46
|
-
children_.Lookup(entry, CodeEntryHash(entry), false);
|
47
|
-
return map_entry != NULL ?
|
48
|
-
reinterpret_cast<ProfileNode*>(map_entry->value) : NULL;
|
49
|
-
}
|
50
|
-
|
51
|
-
|
52
|
-
ProfileNode* ProfileNode::FindOrAddChild(CodeEntry* entry) {
|
53
|
-
HashMap::Entry* map_entry =
|
54
|
-
children_.Lookup(entry, CodeEntryHash(entry), true);
|
55
|
-
if (map_entry->value == NULL) {
|
56
|
-
// New node added.
|
57
|
-
ProfileNode* new_node = new ProfileNode(tree_, entry);
|
58
|
-
map_entry->value = new_node;
|
59
|
-
children_list_.Add(new_node);
|
60
|
-
}
|
61
|
-
return reinterpret_cast<ProfileNode*>(map_entry->value);
|
62
|
-
}
|
63
|
-
|
64
|
-
|
65
|
-
double ProfileNode::GetSelfMillis() const {
|
66
|
-
return tree_->TicksToMillis(self_ticks_);
|
67
|
-
}
|
68
|
-
|
69
|
-
|
70
|
-
double ProfileNode::GetTotalMillis() const {
|
71
|
-
return tree_->TicksToMillis(total_ticks_);
|
72
|
-
}
|
73
|
-
|
74
|
-
|
75
|
-
void ProfileNode::Print(int indent) {
|
76
|
-
OS::Print("%5u %5u %*c %s%s",
|
77
|
-
total_ticks_, self_ticks_,
|
78
|
-
indent, ' ',
|
79
|
-
entry_->name_prefix(),
|
80
|
-
entry_->name());
|
81
|
-
if (entry_->resource_name()[0] != '\0')
|
82
|
-
OS::Print(" %s:%d", entry_->resource_name(), entry_->line_number());
|
83
|
-
OS::Print("\n");
|
84
|
-
for (HashMap::Entry* p = children_.Start();
|
85
|
-
p != NULL;
|
86
|
-
p = children_.Next(p)) {
|
87
|
-
reinterpret_cast<ProfileNode*>(p->value)->Print(indent + 2);
|
88
|
-
}
|
89
|
-
}
|
90
|
-
|
91
|
-
|
92
|
-
namespace {
|
93
|
-
|
94
|
-
class DeleteNodesCallback {
|
95
|
-
public:
|
96
|
-
void AfterAllChildrenTraversed(ProfileNode* node) {
|
97
|
-
delete node;
|
98
|
-
}
|
99
|
-
|
100
|
-
void AfterChildTraversed(ProfileNode*, ProfileNode*) { }
|
101
|
-
};
|
102
|
-
|
103
|
-
} // namespace
|
104
|
-
|
105
|
-
|
106
|
-
ProfileTree::ProfileTree()
|
107
|
-
: root_entry_(Logger::FUNCTION_TAG, "", "(root)", "", 0),
|
108
|
-
root_(new ProfileNode(this, &root_entry_)) {
|
109
|
-
}
|
110
|
-
|
111
|
-
|
112
|
-
ProfileTree::~ProfileTree() {
|
113
|
-
DeleteNodesCallback cb;
|
114
|
-
TraverseDepthFirstPostOrder(&cb);
|
115
|
-
}
|
116
|
-
|
117
|
-
|
118
|
-
void ProfileTree::AddPathFromEnd(const Vector<CodeEntry*>& path) {
|
119
|
-
ProfileNode* node = root_;
|
120
|
-
for (CodeEntry** entry = path.start() + path.length() - 1;
|
121
|
-
entry != path.start() - 1;
|
122
|
-
--entry) {
|
123
|
-
if (*entry != NULL) {
|
124
|
-
node = node->FindOrAddChild(*entry);
|
125
|
-
}
|
126
|
-
}
|
127
|
-
node->IncrementSelfTicks();
|
128
|
-
}
|
129
|
-
|
130
|
-
|
131
|
-
void ProfileTree::AddPathFromStart(const Vector<CodeEntry*>& path) {
|
132
|
-
ProfileNode* node = root_;
|
133
|
-
for (CodeEntry** entry = path.start();
|
134
|
-
entry != path.start() + path.length();
|
135
|
-
++entry) {
|
136
|
-
if (*entry != NULL) {
|
137
|
-
node = node->FindOrAddChild(*entry);
|
138
|
-
}
|
139
|
-
}
|
140
|
-
node->IncrementSelfTicks();
|
141
|
-
}
|
142
|
-
|
143
|
-
|
144
|
-
void ProfileTree::SetTickRatePerMs(double ticks_per_ms) {
|
145
|
-
ms_to_ticks_scale_ = ticks_per_ms > 0 ? 1.0 / ticks_per_ms : 1.0;
|
146
|
-
}
|
147
|
-
|
148
|
-
|
149
|
-
namespace {
|
150
|
-
|
151
|
-
class Position {
|
152
|
-
public:
|
153
|
-
explicit Position(ProfileNode* node)
|
154
|
-
: node(node), child_idx_(0) { }
|
155
|
-
INLINE(ProfileNode* current_child()) {
|
156
|
-
return node->children()->at(child_idx_);
|
157
|
-
}
|
158
|
-
INLINE(bool has_current_child()) {
|
159
|
-
return child_idx_ < node->children()->length();
|
160
|
-
}
|
161
|
-
INLINE(void next_child()) { ++child_idx_; }
|
162
|
-
|
163
|
-
ProfileNode* node;
|
164
|
-
private:
|
165
|
-
int child_idx_;
|
166
|
-
};
|
167
|
-
|
168
|
-
} // namespace
|
169
|
-
|
170
|
-
|
171
|
-
// Non-recursive implementation of a depth-first post-order tree traversal.
|
172
|
-
template <typename Callback>
|
173
|
-
void ProfileTree::TraverseDepthFirstPostOrder(Callback* callback) {
|
174
|
-
List<Position> stack(10);
|
175
|
-
stack.Add(Position(root_));
|
176
|
-
do {
|
177
|
-
Position& current = stack.last();
|
178
|
-
if (current.has_current_child()) {
|
179
|
-
stack.Add(Position(current.current_child()));
|
180
|
-
} else {
|
181
|
-
callback->AfterAllChildrenTraversed(current.node);
|
182
|
-
if (stack.length() > 1) {
|
183
|
-
Position& parent = stack[stack.length() - 2];
|
184
|
-
callback->AfterChildTraversed(parent.node, current.node);
|
185
|
-
parent.next_child();
|
186
|
-
// Remove child from the stack.
|
187
|
-
stack.RemoveLast();
|
188
|
-
}
|
189
|
-
}
|
190
|
-
} while (stack.length() > 1 || stack.last().has_current_child());
|
191
|
-
}
|
192
|
-
|
193
|
-
|
194
|
-
namespace {
|
195
|
-
|
196
|
-
class CalculateTotalTicksCallback {
|
197
|
-
public:
|
198
|
-
void AfterAllChildrenTraversed(ProfileNode* node) {
|
199
|
-
node->IncreaseTotalTicks(node->self_ticks());
|
200
|
-
}
|
201
|
-
|
202
|
-
void AfterChildTraversed(ProfileNode* parent, ProfileNode* child) {
|
203
|
-
parent->IncreaseTotalTicks(child->total_ticks());
|
204
|
-
}
|
205
|
-
};
|
206
|
-
|
207
|
-
} // namespace
|
208
|
-
|
209
|
-
|
210
|
-
void ProfileTree::CalculateTotalTicks() {
|
211
|
-
CalculateTotalTicksCallback cb;
|
212
|
-
TraverseDepthFirstPostOrder(&cb);
|
213
|
-
}
|
214
|
-
|
215
|
-
|
216
|
-
void ProfileTree::ShortPrint() {
|
217
|
-
OS::Print("root: %u %u %.2fms %.2fms\n",
|
218
|
-
root_->total_ticks(), root_->self_ticks(),
|
219
|
-
root_->GetTotalMillis(), root_->GetSelfMillis());
|
220
|
-
}
|
221
|
-
|
222
|
-
|
223
|
-
void CpuProfile::AddPath(const Vector<CodeEntry*>& path) {
|
224
|
-
top_down_.AddPathFromEnd(path);
|
225
|
-
bottom_up_.AddPathFromStart(path);
|
226
|
-
}
|
227
|
-
|
228
|
-
|
229
|
-
void CpuProfile::CalculateTotalTicks() {
|
230
|
-
top_down_.CalculateTotalTicks();
|
231
|
-
bottom_up_.CalculateTotalTicks();
|
232
|
-
}
|
233
|
-
|
234
|
-
|
235
|
-
void CpuProfile::SetActualSamplingRate(double actual_sampling_rate) {
|
236
|
-
top_down_.SetTickRatePerMs(actual_sampling_rate);
|
237
|
-
bottom_up_.SetTickRatePerMs(actual_sampling_rate);
|
238
|
-
}
|
239
|
-
|
240
|
-
|
241
|
-
void CpuProfile::ShortPrint() {
|
242
|
-
OS::Print("top down ");
|
243
|
-
top_down_.ShortPrint();
|
244
|
-
OS::Print("bottom up ");
|
245
|
-
bottom_up_.ShortPrint();
|
246
|
-
}
|
247
|
-
|
248
|
-
|
249
|
-
void CpuProfile::Print() {
|
250
|
-
OS::Print("[Top down]:\n");
|
251
|
-
top_down_.Print();
|
252
|
-
OS::Print("[Bottom up]:\n");
|
253
|
-
bottom_up_.Print();
|
254
|
-
}
|
255
|
-
|
256
|
-
|
257
|
-
const CodeMap::CodeTreeConfig::Key CodeMap::CodeTreeConfig::kNoKey = NULL;
|
258
|
-
const CodeMap::CodeTreeConfig::Value CodeMap::CodeTreeConfig::kNoValue =
|
259
|
-
CodeMap::CodeEntryInfo(NULL, 0);
|
260
|
-
|
261
|
-
|
262
|
-
void CodeMap::AddAlias(Address alias, Address addr) {
|
263
|
-
CodeTree::Locator locator;
|
264
|
-
if (tree_.Find(addr, &locator)) {
|
265
|
-
const CodeEntryInfo& entry_info = locator.value();
|
266
|
-
tree_.Insert(alias, &locator);
|
267
|
-
locator.set_value(entry_info);
|
268
|
-
}
|
269
|
-
}
|
270
|
-
|
271
|
-
|
272
|
-
CodeEntry* CodeMap::FindEntry(Address addr) {
|
273
|
-
CodeTree::Locator locator;
|
274
|
-
if (tree_.FindGreatestLessThan(addr, &locator)) {
|
275
|
-
// locator.key() <= addr. Need to check that addr is within entry.
|
276
|
-
const CodeEntryInfo& entry = locator.value();
|
277
|
-
if (addr < (locator.key() + entry.size))
|
278
|
-
return entry.entry;
|
279
|
-
}
|
280
|
-
return NULL;
|
281
|
-
}
|
282
|
-
|
283
|
-
|
284
|
-
void CodeMap::CodeTreePrinter::Call(
|
285
|
-
const Address& key, const CodeMap::CodeEntryInfo& value) {
|
286
|
-
OS::Print("%p %5d %s\n", key, value.size, value.entry->name());
|
287
|
-
}
|
288
|
-
|
289
|
-
|
290
|
-
void CodeMap::Print() {
|
291
|
-
CodeTreePrinter printer;
|
292
|
-
tree_.ForEach(&printer);
|
293
|
-
}
|
294
|
-
|
295
|
-
|
296
|
-
CpuProfilesCollection::CpuProfilesCollection()
|
297
|
-
: function_and_resource_names_(StringsMatch),
|
298
|
-
profiles_uids_(CpuProfilesMatch),
|
299
|
-
current_profiles_semaphore_(OS::CreateSemaphore(1)) {
|
300
|
-
}
|
301
|
-
|
302
|
-
|
303
|
-
static void DeleteArgsCountName(char** name_ptr) {
|
304
|
-
DeleteArray(*name_ptr);
|
305
|
-
}
|
306
|
-
|
307
|
-
|
308
|
-
static void DeleteCodeEntry(CodeEntry** entry_ptr) {
|
309
|
-
delete *entry_ptr;
|
310
|
-
}
|
311
|
-
|
312
|
-
static void DeleteCpuProfile(CpuProfile** profile_ptr) {
|
313
|
-
delete *profile_ptr;
|
314
|
-
}
|
315
|
-
|
316
|
-
|
317
|
-
CpuProfilesCollection::~CpuProfilesCollection() {
|
318
|
-
delete current_profiles_semaphore_;
|
319
|
-
current_profiles_.Iterate(DeleteCpuProfile);
|
320
|
-
profiles_.Iterate(DeleteCpuProfile);
|
321
|
-
code_entries_.Iterate(DeleteCodeEntry);
|
322
|
-
args_count_names_.Iterate(DeleteArgsCountName);
|
323
|
-
for (HashMap::Entry* p = function_and_resource_names_.Start();
|
324
|
-
p != NULL;
|
325
|
-
p = function_and_resource_names_.Next(p)) {
|
326
|
-
DeleteArray(reinterpret_cast<const char*>(p->value));
|
327
|
-
}
|
328
|
-
}
|
329
|
-
|
330
|
-
|
331
|
-
bool CpuProfilesCollection::StartProfiling(const char* title, unsigned uid) {
|
332
|
-
ASSERT(uid > 0);
|
333
|
-
current_profiles_semaphore_->Wait();
|
334
|
-
for (int i = 0; i < current_profiles_.length(); ++i) {
|
335
|
-
if (strcmp(current_profiles_[i]->title(), title) == 0) {
|
336
|
-
// Ignore attempts to start profile with the same title.
|
337
|
-
current_profiles_semaphore_->Signal();
|
338
|
-
return false;
|
339
|
-
}
|
340
|
-
}
|
341
|
-
current_profiles_.Add(new CpuProfile(title, uid));
|
342
|
-
current_profiles_semaphore_->Signal();
|
343
|
-
return true;
|
344
|
-
}
|
345
|
-
|
346
|
-
|
347
|
-
bool CpuProfilesCollection::StartProfiling(String* title, unsigned uid) {
|
348
|
-
return StartProfiling(GetName(title), uid);
|
349
|
-
}
|
350
|
-
|
351
|
-
|
352
|
-
CpuProfile* CpuProfilesCollection::StopProfiling(const char* title,
|
353
|
-
double actual_sampling_rate) {
|
354
|
-
const int title_len = StrLength(title);
|
355
|
-
CpuProfile* profile = NULL;
|
356
|
-
current_profiles_semaphore_->Wait();
|
357
|
-
for (int i = current_profiles_.length() - 1; i >= 0; --i) {
|
358
|
-
if (title_len == 0 || strcmp(current_profiles_[i]->title(), title) == 0) {
|
359
|
-
profile = current_profiles_.Remove(i);
|
360
|
-
break;
|
361
|
-
}
|
362
|
-
}
|
363
|
-
current_profiles_semaphore_->Signal();
|
364
|
-
|
365
|
-
if (profile != NULL) {
|
366
|
-
profile->CalculateTotalTicks();
|
367
|
-
profile->SetActualSamplingRate(actual_sampling_rate);
|
368
|
-
profiles_.Add(profile);
|
369
|
-
HashMap::Entry* entry =
|
370
|
-
profiles_uids_.Lookup(reinterpret_cast<void*>(profile->uid()),
|
371
|
-
static_cast<uint32_t>(profile->uid()),
|
372
|
-
true);
|
373
|
-
ASSERT(entry->value == NULL);
|
374
|
-
entry->value = profile;
|
375
|
-
}
|
376
|
-
return profile;
|
377
|
-
}
|
378
|
-
|
379
|
-
|
380
|
-
CpuProfile* CpuProfilesCollection::StopProfiling(String* title,
|
381
|
-
double actual_sampling_rate) {
|
382
|
-
return StopProfiling(GetName(title), actual_sampling_rate);
|
383
|
-
}
|
384
|
-
|
385
|
-
|
386
|
-
CpuProfile* CpuProfilesCollection::GetProfile(unsigned uid) {
|
387
|
-
HashMap::Entry* entry = profiles_uids_.Lookup(reinterpret_cast<void*>(uid),
|
388
|
-
static_cast<uint32_t>(uid),
|
389
|
-
false);
|
390
|
-
return entry != NULL ? reinterpret_cast<CpuProfile*>(entry->value) : NULL;
|
391
|
-
}
|
392
|
-
|
393
|
-
|
394
|
-
CodeEntry* CpuProfilesCollection::NewCodeEntry(Logger::LogEventsAndTags tag,
|
395
|
-
String* name,
|
396
|
-
String* resource_name,
|
397
|
-
int line_number) {
|
398
|
-
CodeEntry* entry = new CodeEntry(tag,
|
399
|
-
CodeEntry::kEmptyNamePrefix,
|
400
|
-
GetFunctionName(name),
|
401
|
-
GetName(resource_name),
|
402
|
-
line_number);
|
403
|
-
code_entries_.Add(entry);
|
404
|
-
return entry;
|
405
|
-
}
|
406
|
-
|
407
|
-
|
408
|
-
CodeEntry* CpuProfilesCollection::NewCodeEntry(Logger::LogEventsAndTags tag,
|
409
|
-
const char* name) {
|
410
|
-
CodeEntry* entry = new CodeEntry(tag,
|
411
|
-
CodeEntry::kEmptyNamePrefix,
|
412
|
-
GetFunctionName(name),
|
413
|
-
"",
|
414
|
-
v8::CpuProfileNode::kNoLineNumberInfo);
|
415
|
-
code_entries_.Add(entry);
|
416
|
-
return entry;
|
417
|
-
}
|
418
|
-
|
419
|
-
|
420
|
-
CodeEntry* CpuProfilesCollection::NewCodeEntry(Logger::LogEventsAndTags tag,
|
421
|
-
const char* name_prefix,
|
422
|
-
String* name) {
|
423
|
-
CodeEntry* entry = new CodeEntry(tag,
|
424
|
-
name_prefix,
|
425
|
-
GetName(name),
|
426
|
-
"",
|
427
|
-
v8::CpuProfileNode::kNoLineNumberInfo);
|
428
|
-
code_entries_.Add(entry);
|
429
|
-
return entry;
|
430
|
-
}
|
431
|
-
|
432
|
-
|
433
|
-
CodeEntry* CpuProfilesCollection::NewCodeEntry(Logger::LogEventsAndTags tag,
|
434
|
-
int args_count) {
|
435
|
-
CodeEntry* entry = new CodeEntry(tag,
|
436
|
-
"args_count: ",
|
437
|
-
GetName(args_count),
|
438
|
-
"",
|
439
|
-
v8::CpuProfileNode::kNoLineNumberInfo);
|
440
|
-
code_entries_.Add(entry);
|
441
|
-
return entry;
|
442
|
-
}
|
443
|
-
|
444
|
-
|
445
|
-
const char* CpuProfilesCollection::GetName(String* name) {
|
446
|
-
if (name->IsString()) {
|
447
|
-
char* c_name =
|
448
|
-
name->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL).Detach();
|
449
|
-
HashMap::Entry* cache_entry =
|
450
|
-
function_and_resource_names_.Lookup(c_name,
|
451
|
-
name->Hash(),
|
452
|
-
true);
|
453
|
-
if (cache_entry->value == NULL) {
|
454
|
-
// New entry added.
|
455
|
-
cache_entry->value = c_name;
|
456
|
-
} else {
|
457
|
-
DeleteArray(c_name);
|
458
|
-
}
|
459
|
-
return reinterpret_cast<const char*>(cache_entry->value);
|
460
|
-
} else {
|
461
|
-
return "";
|
462
|
-
}
|
463
|
-
}
|
464
|
-
|
465
|
-
|
466
|
-
const char* CpuProfilesCollection::GetName(int args_count) {
|
467
|
-
ASSERT(args_count >= 0);
|
468
|
-
if (args_count_names_.length() <= args_count) {
|
469
|
-
args_count_names_.AddBlock(
|
470
|
-
NULL, args_count - args_count_names_.length() + 1);
|
471
|
-
}
|
472
|
-
if (args_count_names_[args_count] == NULL) {
|
473
|
-
const int kMaximumNameLength = 32;
|
474
|
-
char* name = NewArray<char>(kMaximumNameLength);
|
475
|
-
OS::SNPrintF(Vector<char>(name, kMaximumNameLength), "%d", args_count);
|
476
|
-
args_count_names_[args_count] = name;
|
477
|
-
}
|
478
|
-
return args_count_names_[args_count];
|
479
|
-
}
|
480
|
-
|
481
|
-
|
482
|
-
void CpuProfilesCollection::AddPathToCurrentProfiles(
|
483
|
-
const Vector<CodeEntry*>& path) {
|
484
|
-
// As starting / stopping profiles is rare relatively to this
|
485
|
-
// method, we don't bother minimizing the duration of lock holding,
|
486
|
-
// e.g. copying contents of the list to a local vector.
|
487
|
-
current_profiles_semaphore_->Wait();
|
488
|
-
for (int i = 0; i < current_profiles_.length(); ++i) {
|
489
|
-
current_profiles_[i]->AddPath(path);
|
490
|
-
}
|
491
|
-
current_profiles_semaphore_->Signal();
|
492
|
-
}
|
493
|
-
|
494
|
-
|
495
|
-
void SampleRateCalculator::Tick() {
|
496
|
-
if (--wall_time_query_countdown_ == 0)
|
497
|
-
UpdateMeasurements(OS::TimeCurrentMillis());
|
498
|
-
}
|
499
|
-
|
500
|
-
|
501
|
-
void SampleRateCalculator::UpdateMeasurements(double current_time) {
|
502
|
-
if (measurements_count_++ != 0) {
|
503
|
-
const double measured_ticks_per_ms =
|
504
|
-
(kWallTimeQueryIntervalMs * ticks_per_ms_) /
|
505
|
-
(current_time - last_wall_time_);
|
506
|
-
// Update the average value.
|
507
|
-
ticks_per_ms_ +=
|
508
|
-
(measured_ticks_per_ms - ticks_per_ms_) / measurements_count_;
|
509
|
-
// Update the externally accessible result.
|
510
|
-
result_ = static_cast<AtomicWord>(ticks_per_ms_ * kResultScale);
|
511
|
-
}
|
512
|
-
last_wall_time_ = current_time;
|
513
|
-
wall_time_query_countdown_ =
|
514
|
-
static_cast<unsigned>(kWallTimeQueryIntervalMs * ticks_per_ms_);
|
515
|
-
}
|
516
|
-
|
517
|
-
|
518
|
-
const char* ProfileGenerator::kAnonymousFunctionName = "(anonymous function)";
|
519
|
-
const char* ProfileGenerator::kProgramEntryName = "(program)";
|
520
|
-
const char* ProfileGenerator::kGarbageCollectorEntryName =
|
521
|
-
"(garbage collector)";
|
522
|
-
|
523
|
-
|
524
|
-
ProfileGenerator::ProfileGenerator(CpuProfilesCollection* profiles)
|
525
|
-
: profiles_(profiles),
|
526
|
-
program_entry_(
|
527
|
-
profiles->NewCodeEntry(Logger::FUNCTION_TAG, kProgramEntryName)),
|
528
|
-
gc_entry_(
|
529
|
-
profiles->NewCodeEntry(Logger::BUILTIN_TAG,
|
530
|
-
kGarbageCollectorEntryName)) {
|
531
|
-
}
|
532
|
-
|
533
|
-
|
534
|
-
void ProfileGenerator::RecordTickSample(const TickSample& sample) {
|
535
|
-
// Allocate space for stack frames + pc + function + vm-state.
|
536
|
-
ScopedVector<CodeEntry*> entries(sample.frames_count + 3);
|
537
|
-
// As actual number of decoded code entries may vary, initialize
|
538
|
-
// entries vector with NULL values.
|
539
|
-
CodeEntry** entry = entries.start();
|
540
|
-
memset(entry, 0, entries.length() * sizeof(*entry));
|
541
|
-
if (sample.pc != NULL) {
|
542
|
-
*entry++ = code_map_.FindEntry(sample.pc);
|
543
|
-
|
544
|
-
if (sample.function != NULL) {
|
545
|
-
*entry = code_map_.FindEntry(sample.function);
|
546
|
-
if (*entry != NULL && !(*entry)->is_js_function()) {
|
547
|
-
*entry = NULL;
|
548
|
-
} else {
|
549
|
-
CodeEntry* pc_entry = *entries.start();
|
550
|
-
if (pc_entry == NULL || pc_entry->is_js_function())
|
551
|
-
*entry = NULL;
|
552
|
-
}
|
553
|
-
entry++;
|
554
|
-
}
|
555
|
-
|
556
|
-
for (const Address *stack_pos = sample.stack,
|
557
|
-
*stack_end = stack_pos + sample.frames_count;
|
558
|
-
stack_pos != stack_end;
|
559
|
-
++stack_pos) {
|
560
|
-
*entry++ = code_map_.FindEntry(*stack_pos);
|
561
|
-
}
|
562
|
-
}
|
563
|
-
|
564
|
-
if (FLAG_prof_browser_mode) {
|
565
|
-
bool no_symbolized_entries = true;
|
566
|
-
for (CodeEntry** e = entries.start(); e != entry; ++e) {
|
567
|
-
if (*e != NULL) {
|
568
|
-
no_symbolized_entries = false;
|
569
|
-
break;
|
570
|
-
}
|
571
|
-
}
|
572
|
-
// If no frames were symbolized, put the VM state entry in.
|
573
|
-
if (no_symbolized_entries) {
|
574
|
-
*entry++ = EntryForVMState(sample.state);
|
575
|
-
}
|
576
|
-
}
|
577
|
-
|
578
|
-
profiles_->AddPathToCurrentProfiles(entries);
|
579
|
-
}
|
580
|
-
|
581
|
-
} } // namespace v8::internal
|
582
|
-
|
583
|
-
#endif // ENABLE_LOGGING_AND_PROFILING
|