Ignore:
Timestamp:
Jul 17, 2009, 2:17:45 PM (16 years ago)
Author:
[email protected]
Message:

2009-07-17 Gabor Loki <[email protected]>

Reviewed by Gavin Barraclough.

Extend AssemblerBuffer with constant pool handling mechanism.
https://bugs.webkit.org/show_bug.cgi?id=24986

Add a platform independed constant pool framework.
This pool can store 32 or 64 bits values which is enough to hold
any integer, pointer or double constant.

  • assembler/AssemblerBuffer.h: (JSC::AssemblerBuffer::putIntUnchecked): (JSC::AssemblerBuffer::putInt64Unchecked): (JSC::AssemblerBuffer::append): (JSC::AssemblerBuffer::grow):
  • assembler/AssemblerBufferWithConstantPool.h: Added. (JSC::):
File:
1 edited

Legend:

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

    r44341 r46057  
    9696        void putIntUnchecked(int value)
    9797        {
     98            ASSERT(!(m_size > m_capacity - 4));
    9899            *reinterpret_cast<int*>(&m_buffer[m_size]) = value;
    99100            m_size += 4;
     
    102103        void putInt64Unchecked(int64_t value)
    103104        {
     105            ASSERT(!(m_size > m_capacity - 8));
    104106            *reinterpret_cast<int64_t*>(&m_buffer[m_size]) = value;
    105107            m_size += 8;
     
    138140        }
    139141
    140     private:
    141         void grow()
     142    protected:
     143        void append(const char* data, int size)
    142144        {
    143             m_capacity += m_capacity / 2;
     145            if (m_size > m_capacity - size)
     146                grow(size);
     147
     148            memcpy(m_buffer + m_size, data, size);
     149            m_size += size;
     150        }
     151
     152        void grow(int extraCapacity = 0)
     153        {
     154            m_capacity += m_capacity / 2 + extraCapacity;
    144155
    145156            if (m_buffer == m_inlineBuffer) {
Note: See TracChangeset for help on using the changeset viewer.