+void LinkBuffer::allocate(size_t initialSize, void* ownerUID, JITCompilationEffort effort)
+{
+ if (m_code) {
+ if (initialSize > m_size)
+ return;
+
+ m_didAllocate = true;
+ m_size = initialSize;
+ return;
+ }
+
+ m_executableMemory = m_vm->executableAllocator.allocate(*m_vm, initialSize, ownerUID, effort);
+ if (!m_executableMemory)
+ return;
+ ExecutableAllocator::makeWritable(m_executableMemory->start(), m_executableMemory->sizeInBytes());
+ m_code = m_executableMemory->start();
+ m_size = initialSize;
+ m_didAllocate = true;
+}
+
+void LinkBuffer::shrink(size_t newSize)
+{
+ if (!m_executableMemory)
+ return;
+ m_size = newSize;
+ m_executableMemory->shrink(m_size);
+}
+