summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/heap/CopiedSpace.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/heap/CopiedSpace.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/JavaScriptCore/heap/CopiedSpace.h')
-rw-r--r--Source/JavaScriptCore/heap/CopiedSpace.h147
1 files changed, 0 insertions, 147 deletions
diff --git a/Source/JavaScriptCore/heap/CopiedSpace.h b/Source/JavaScriptCore/heap/CopiedSpace.h
deleted file mode 100644
index c0a59a27e..000000000
--- a/Source/JavaScriptCore/heap/CopiedSpace.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef CopiedSpace_h
-#define CopiedSpace_h
-
-#include "CopiedAllocator.h"
-#include "HeapBlock.h"
-#include "HeapOperation.h"
-#include "TinyBloomFilter.h"
-#include <wtf/Assertions.h>
-#include <wtf/CheckedBoolean.h>
-#include <wtf/DoublyLinkedList.h>
-#include <wtf/HashSet.h>
-#include <wtf/OSAllocator.h>
-#include <wtf/PageAllocationAligned.h>
-#include <wtf/PageBlock.h>
-#include <wtf/StdLibExtras.h>
-#include <wtf/TCSpinLock.h>
-#include <wtf/ThreadingPrimitives.h>
-
-namespace JSC {
-
-class Heap;
-class CopiedBlock;
-
-class CopiedSpace {
- friend class CopyVisitor;
- friend class GCThreadSharedData;
- friend class SlotVisitor;
- friend class JIT;
-public:
- CopiedSpace(Heap*);
- ~CopiedSpace();
- void init();
-
- CheckedBoolean tryAllocate(size_t, void**);
- CheckedBoolean tryReallocate(void**, size_t, size_t);
-
- CopiedAllocator& allocator() { return m_allocator; }
-
- void didStartFullCollection();
-
- template <HeapOperation collectionType>
- void startedCopying();
- void startedEdenCopy();
- void startedFullCopy();
- void doneCopying();
- bool isInCopyPhase() { return m_inCopyingPhase; }
-
- void pin(CopiedBlock*);
- bool isPinned(void*);
-
- bool contains(CopiedBlock*);
- bool contains(void*, CopiedBlock*&);
-
- void pinIfNecessary(void* pointer);
-
- size_t size();
- size_t capacity();
-
- bool isPagedOut(double deadline);
- bool shouldDoCopyPhase() { return m_shouldDoCopyPhase; }
-
- static CopiedBlock* blockFor(void*);
-
- Heap* heap() const { return m_heap; }
-
-private:
- static bool isOversize(size_t);
-
- JS_EXPORT_PRIVATE CheckedBoolean tryAllocateSlowCase(size_t, void**);
- CheckedBoolean tryAllocateOversize(size_t, void**);
- CheckedBoolean tryReallocateOversize(void**, size_t, size_t);
-
- void allocateBlock();
- CopiedBlock* allocateBlockForCopyingPhase();
-
- void doneFillingBlock(CopiedBlock*, CopiedBlock**);
- void recycleEvacuatedBlock(CopiedBlock*, HeapOperation collectionType);
- void recycleBorrowedBlock(CopiedBlock*);
-
- Heap* m_heap;
-
- CopiedAllocator m_allocator;
-
- HashSet<CopiedBlock*> m_blockSet;
-
- SpinLock m_toSpaceLock;
-
- struct CopiedGeneration {
- CopiedGeneration()
- : toSpace(0)
- , fromSpace(0)
- {
- }
-
- DoublyLinkedList<CopiedBlock>* toSpace;
- DoublyLinkedList<CopiedBlock>* fromSpace;
-
- DoublyLinkedList<CopiedBlock> blocks1;
- DoublyLinkedList<CopiedBlock> blocks2;
- DoublyLinkedList<CopiedBlock> oversizeBlocks;
-
- TinyBloomFilter blockFilter;
- };
-
- CopiedGeneration m_oldGen;
- CopiedGeneration m_newGen;
-
- bool m_inCopyingPhase;
- bool m_shouldDoCopyPhase;
-
- Mutex m_loanedBlocksLock;
- ThreadCondition m_loanedBlocksCondition;
- size_t m_numberOfLoanedBlocks;
-
- static const size_t s_maxAllocationSize = CopiedBlock::blockSize / 2;
- static const size_t s_initialBlockNum = 16;
- static const size_t s_blockMask = ~(CopiedBlock::blockSize - 1);
-};
-
-} // namespace JSC
-
-#endif