Ignore:
Timestamp:
Dec 3, 2008, 4:10:53 PM (16 years ago)
Author:
[email protected]
Message:

2008-12-03 Sam Weinig <[email protected]>

Reviewed by Geoffrey Garen.

Remove shared AssemblerBuffer 1MB buffer and instead give AssemblerBuffer
an 256 byte inline capacity.

1% progression on Sunspider.

  • assembler/AssemblerBuffer.h: (JSC::AssemblerBuffer::AssemblerBuffer): (JSC::AssemblerBuffer::~AssemblerBuffer): (JSC::AssemblerBuffer::grow):
  • assembler/MacroAssembler.h: (JSC::MacroAssembler::MacroAssembler):
  • assembler/X86Assembler.h: (JSC::X86Assembler::X86Assembler):
  • interpreter/Interpreter.cpp: (JSC::Interpreter::Interpreter):
  • interpreter/Interpreter.h:
  • jit/JIT.cpp: (JSC::JIT::JIT):
  • parser/Nodes.cpp: (JSC::RegExpNode::emitBytecode):
  • runtime/RegExp.cpp: (JSC::RegExp::RegExp): (JSC::RegExp::create):
  • runtime/RegExp.h:
  • runtime/RegExpConstructor.cpp: (JSC::constructRegExp):
  • runtime/RegExpPrototype.cpp: (JSC::regExpProtoFuncCompile):
  • runtime/StringPrototype.cpp: (JSC::stringProtoFuncMatch): (JSC::stringProtoFuncSearch):
  • wrec/WREC.cpp: (JSC::WREC::Generator::compileRegExp):
  • wrec/WRECGenerator.h: (JSC::WREC::Generator::Generator):
  • wrec/WRECParser.h: (JSC::WREC::Parser::Parser):
File:
1 edited

Legend:

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

    r38545 r38975  
    3838
    3939    class AssemblerBuffer {
     40        static const int inlineCapacity = 256;
    4041    public:
    41         AssemblerBuffer(int capacity)
    42             : m_buffer(static_cast<char*>(fastMalloc(capacity)))
    43             , m_capacity(capacity)
     42        AssemblerBuffer()
     43            : m_buffer(m_inlineBuffer)
     44            , m_capacity(inlineCapacity)
    4445            , m_size(0)
    4546        {
     
    4849        ~AssemblerBuffer()
    4950        {
    50             fastFree(m_buffer);
     51            if (m_buffer != m_inlineBuffer)
     52                fastFree(m_buffer);
    5153        }
    5254
     
    113115        }
    114116
    115         AssemblerBuffer* reset()
    116         {
    117             m_size = 0;
    118             return this;
    119         }
    120 
    121117        void* executableCopy()
    122118        {
     
    136132        {
    137133            m_capacity += m_capacity / 2;
    138             m_buffer = static_cast<char*>(fastRealloc(m_buffer, m_capacity));
     134
     135            if (m_buffer == m_inlineBuffer) {
     136                char* newBuffer = static_cast<char*>(fastMalloc(m_capacity));
     137                m_buffer = static_cast<char*>(memcpy(newBuffer, m_buffer, m_size));
     138            } else
     139                m_buffer = static_cast<char*>(fastRealloc(m_buffer, m_capacity));
    139140        }
    140141
     142        char m_inlineBuffer[inlineCapacity];
    141143        char* m_buffer;
    142144        int m_capacity;
Note: See TracChangeset for help on using the changeset viewer.