Ignore:
Timestamp:
May 13, 2009, 2:10:02 AM (16 years ago)
Author:
[email protected]
Message:

2009-05-12 Gavin Barraclough <[email protected]>

Reviewed by Oliver Hunt.

Add SamplingCounter tool to provide a simple mechanism for counting events in JSC
(enabled using ENABLE(SAMPLING_COUNTERS)). To count events within a single function
use the class 'SamplingCounter', where the counter may be incremented from multiple
functions 'GlobalSamplingCounter' may be convenient; all other counters (stack or
heap allocated, rather than statically declared) should use the DeletableSamplingCounter.
Further description of these classes is provided alongside their definition in
SamplingTool.h.

Counters may be incremented from c++ by calling the 'count()' method on the counter,
or may be incremented by JIT code by using the 'emitCount()' method within the JIT.

This patch also fixes CODEBLOCK_SAMPLING, which was missing a null pointer check.

  • JavaScriptCore.exp:
  • assembler/MacroAssemblerX86.h: (JSC::MacroAssemblerX86::addWithCarry32): (JSC::MacroAssemblerX86::and32): (JSC::MacroAssemblerX86::or32):
  • assembler/MacroAssemblerX86Common.h: (JSC::MacroAssemblerX86Common::and32): (JSC::MacroAssemblerX86Common::or32):
  • assembler/MacroAssemblerX86_64.h: (JSC::MacroAssemblerX86_64::and32): (JSC::MacroAssemblerX86_64::or32): (JSC::MacroAssemblerX86_64::addPtr):
  • assembler/X86Assembler.h: (JSC::X86Assembler::): (JSC::X86Assembler::adcl_im): (JSC::X86Assembler::addq_im): (JSC::X86Assembler::andl_im): (JSC::X86Assembler::orl_im):
  • bytecode/SamplingTool.cpp: (JSC::AbstractSamplingCounter::dump):
  • bytecode/SamplingTool.h: (JSC::AbstractSamplingCounter::count): (JSC::GlobalSamplingCounter::name): (JSC::SamplingCounter::SamplingCounter):
  • jit/JIT.h:
  • jit/JITCall.cpp: (JSC::):
  • jit/JITInlineMethods.h: (JSC::JIT::setSamplingFlag): (JSC::JIT::clearSamplingFlag): (JSC::JIT::emitCount):
  • jsc.cpp: (runWithScripts):
  • parser/Nodes.cpp: (JSC::ScopeNode::ScopeNode):
  • wtf/Platform.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/assembler/MacroAssemblerX86.h

    r43432 r43619  
    4040
    4141    using MacroAssemblerX86Common::add32;
     42    using MacroAssemblerX86Common::and32;
    4243    using MacroAssemblerX86Common::sub32;
     44    using MacroAssemblerX86Common::or32;
    4345    using MacroAssemblerX86Common::load32;
    4446    using MacroAssemblerX86Common::store32;
     
    5658    }
    5759   
     60    void addWithCarry32(Imm32 imm, AbsoluteAddress address)
     61    {
     62        m_assembler.adcl_im(imm.m_value, address.m_ptr);
     63    }
     64   
     65    void and32(Imm32 imm, AbsoluteAddress address)
     66    {
     67        m_assembler.andl_im(imm.m_value, address.m_ptr);
     68    }
     69   
     70    void or32(Imm32 imm, AbsoluteAddress address)
     71    {
     72        m_assembler.orl_im(imm.m_value, address.m_ptr);
     73    }
     74
    5875    void sub32(Imm32 imm, AbsoluteAddress address)
    5976    {
Note: See TracChangeset for help on using the changeset viewer.