From 588991f6df3d6813378721166a7260990835817e Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Wed, 19 Apr 2023 17:06:56 -0400 Subject: Make SourceMap a value type (#2812) * #include an absolute path didn't work - because paths were taken to always be relative. * Moved JSON source map writing logic to JSONSourceMapUtil. * Use ArtifactHandler to read/write SourceMaps. Use ObjectCastableAdapter to hold SourceMap Only serialize SourceMap <-> JSON on demand. * Make some types swappable. * BoxValue impl. * Added asBoxValue. * Remove const get funcs. * Fix typo in asBoxValue. * Fix another typo in asBoxValue. * Slightly simplify conversion to blob of SourceMap. * Small fix for asBoxValue --- source/core/slang-memory-arena.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'source/core/slang-memory-arena.cpp') diff --git a/source/core/slang-memory-arena.cpp b/source/core/slang-memory-arena.cpp index 6fc6c0c3f..6a13addb6 100644 --- a/source/core/slang-memory-arena.cpp +++ b/source/core/slang-memory-arena.cpp @@ -23,6 +23,7 @@ MemoryArena::~MemoryArena() reset(); } + MemoryArena::MemoryArena(size_t blockPayloadSize, size_t blockAlignment) { _initialize(blockPayloadSize, blockAlignment); @@ -62,6 +63,22 @@ void MemoryArena::_initialize(size_t blockPayloadSize, size_t alignment) _resetCurrentBlock(); } +void MemoryArena::swapWith(ThisType& rhs) +{ + Swap(m_start, rhs.m_start); + Swap(m_end, rhs.m_end); + Swap(m_current, rhs.m_current); + + Swap(m_blockPayloadSize, rhs.m_blockPayloadSize); + Swap(m_blockAllocSize, rhs.m_blockAllocSize); + Swap(m_blockAlignment, rhs.m_blockAlignment); + + Swap(m_availableBlocks, rhs.m_availableBlocks); + Swap(m_usedBlocks, rhs.m_usedBlocks); + + m_blockFreeList.swapWith(rhs.m_blockFreeList); +} + void MemoryArena::_resetCurrentBlock() { m_start = nullptr; -- cgit v1.2.3