diff options
Diffstat (limited to 'Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h')
-rw-r--r-- | Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h b/Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h index 9a9618f..3cfc67b 100644 --- a/Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h +++ b/Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h @@ -85,7 +85,14 @@ namespace JSC { template <int maxPoolSize, int barrierSize, int maxInstructionSize, class AssemblerType> class AssemblerBufferWithConstantPool: public AssemblerBuffer { typedef SegmentedVector<uint32_t, 512> LoadOffsets; + using AssemblerBuffer::putIntegral; + using AssemblerBuffer::putIntegralUnchecked; public: + typedef struct { + short high; + short low; + } TwoShorts; + enum { UniqueConst, ReusableConst, @@ -171,6 +178,19 @@ public: correctDeltas(8); } + void putIntegral(TwoShorts value) + { + if (m_size > m_capacity - sizeof(TwoShorts)) + grow(); + putIntegralUnchecked(value); + } + + void putIntegralUnchecked(TwoShorts value) + { + putIntegralUnchecked(value.high); + putIntegralUnchecked(value.low); + } + int size() { flushIfNoSpaceFor(maxInstructionSize, sizeof(uint64_t)); |