Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1034)

Side by Side Diff: Source/platform/heap/Heap.h

Issue 820693006: Incremental GCInfo descriptor table expansion. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: add missing PLATFORM_EXPORT Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | Source/platform/heap/Heap.cpp » ('j') | Source/platform/heap/Visitor.cpp » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 #endif 144 #endif
145 // sizeof(HeapObjectHeader) must be equal to or smaller than 145 // sizeof(HeapObjectHeader) must be equal to or smaller than
146 // allocationGranurarity, because HeapObjectHeader is used as a header 146 // allocationGranurarity, because HeapObjectHeader is used as a header
147 // for an freed entry. Given that the smallest entry size is 147 // for an freed entry. Given that the smallest entry size is
148 // allocationGranurarity, HeapObjectHeader must fit into the size. 148 // allocationGranurarity, HeapObjectHeader must fit into the size.
149 static_assert(sizeof(HeapObjectHeader) <= allocationGranularity, "size o f HeapObjectHeader must be smaller than allocationGranularity"); 149 static_assert(sizeof(HeapObjectHeader) <= allocationGranularity, "size o f HeapObjectHeader must be smaller than allocationGranularity");
150 #if CPU(64BIT) 150 #if CPU(64BIT)
151 static_assert(sizeof(HeapObjectHeader) == 8, "size of HeapObjectHeader m ust be 8 byte aligned"); 151 static_assert(sizeof(HeapObjectHeader) == 8, "size of HeapObjectHeader m ust be 8 byte aligned");
152 #endif 152 #endif
153 153
154 ASSERT(gcInfoIndex < gcInfoIndexMax); 154 ASSERT(gcInfoIndex < GCInfoTable::maxIndex);
155 ASSERT(size < nonLargeObjectSizeMax); 155 ASSERT(size < nonLargeObjectSizeMax);
156 ASSERT(!(size & allocationMask)); 156 ASSERT(!(size & allocationMask));
157 m_encoded = (gcInfoIndex << headerGCInfoIndexShift) | size | (gcInfoInde x ? 0 : headerFreedBitMask); 157 m_encoded = (gcInfoIndex << headerGCInfoIndexShift) | size | (gcInfoInde x ? 0 : headerFreedBitMask);
158 } 158 }
159 159
160 NO_SANITIZE_ADDRESS 160 NO_SANITIZE_ADDRESS
161 bool isFree() const { return m_encoded & headerFreedBitMask; } 161 bool isFree() const { return m_encoded & headerFreedBitMask; }
162 NO_SANITIZE_ADDRESS 162 NO_SANITIZE_ADDRESS
163 bool isPromptlyFreed() const { return (m_encoded & headerPromptlyFreedBitMas k) == headerPromptlyFreedBitMask; } 163 bool isPromptlyFreed() const { return (m_encoded & headerPromptlyFreedBitMas k) == headerPromptlyFreedBitMask; }
164 NO_SANITIZE_ADDRESS 164 NO_SANITIZE_ADDRESS
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 // This look-up uses the region search tree and a negative contains cache to 914 // This look-up uses the region search tree and a negative contains cache to
915 // provide an efficient mapping from arbitrary addresses to the containing 915 // provide an efficient mapping from arbitrary addresses to the containing
916 // heap-page if one exists. 916 // heap-page if one exists.
917 static BaseHeapPage* lookup(Address); 917 static BaseHeapPage* lookup(Address);
918 static void addPageMemoryRegion(PageMemoryRegion*); 918 static void addPageMemoryRegion(PageMemoryRegion*);
919 static void removePageMemoryRegion(PageMemoryRegion*); 919 static void removePageMemoryRegion(PageMemoryRegion*);
920 920
921 static const GCInfo* gcInfo(size_t gcInfoIndex) 921 static const GCInfo* gcInfo(size_t gcInfoIndex)
922 { 922 {
923 ASSERT(gcInfoIndex >= 1); 923 ASSERT(gcInfoIndex >= 1);
924 ASSERT(gcInfoIndex < gcInfoIndexMax); 924 ASSERT(gcInfoIndex < GCInfoTable::maxIndex);
925 ASSERT(s_gcInfoTable); 925 ASSERT(s_gcInfoTable);
926 const GCInfo* info = s_gcInfoTable[gcInfoIndex]; 926 const GCInfo* info = s_gcInfoTable[gcInfoIndex];
927 ASSERT(info); 927 ASSERT(info);
928 return info; 928 return info;
929 } 929 }
930 930
931 static void increaseAllocatedObjectSize(size_t delta) { atomicAdd(&s_allocat edObjectSize, static_cast<long>(delta)); } 931 static void increaseAllocatedObjectSize(size_t delta) { atomicAdd(&s_allocat edObjectSize, static_cast<long>(delta)); }
932 static void decreaseAllocatedObjectSize(size_t delta) { atomicSubtract(&s_al locatedObjectSize, static_cast<long>(delta)); } 932 static void decreaseAllocatedObjectSize(size_t delta) { atomicSubtract(&s_al locatedObjectSize, static_cast<long>(delta)); }
933 static size_t allocatedObjectSize() { return acquireLoad(&s_allocatedObjectS ize); } 933 static size_t allocatedObjectSize() { return acquireLoad(&s_allocatedObjectS ize); }
934 static void increaseMarkedObjectSize(size_t delta) { atomicAdd(&s_markedObje ctSize, static_cast<long>(delta)); } 934 static void increaseMarkedObjectSize(size_t delta) { atomicAdd(&s_markedObje ctSize, static_cast<long>(delta)); }
(...skipping 1472 matching lines...) Expand 10 before | Expand all | Expand 10 after
2407 template<typename T, size_t inlineCapacity> 2407 template<typename T, size_t inlineCapacity>
2408 struct GCInfoTrait<HeapVector<T, inlineCapacity>> : public GCInfoTrait<Vector<T, inlineCapacity, HeapAllocator>> { }; 2408 struct GCInfoTrait<HeapVector<T, inlineCapacity>> : public GCInfoTrait<Vector<T, inlineCapacity, HeapAllocator>> { };
2409 template<typename T, size_t inlineCapacity> 2409 template<typename T, size_t inlineCapacity>
2410 struct GCInfoTrait<HeapDeque<T, inlineCapacity>> : public GCInfoTrait<Deque<T, i nlineCapacity, HeapAllocator>> { }; 2410 struct GCInfoTrait<HeapDeque<T, inlineCapacity>> : public GCInfoTrait<Deque<T, i nlineCapacity, HeapAllocator>> { };
2411 template<typename T, typename U, typename V> 2411 template<typename T, typename U, typename V>
2412 struct GCInfoTrait<HeapHashCountedSet<T, U, V>> : public GCInfoTrait<HashCounted Set<T, U, V, HeapAllocator>> { }; 2412 struct GCInfoTrait<HeapHashCountedSet<T, U, V>> : public GCInfoTrait<HashCounted Set<T, U, V, HeapAllocator>> { };
2413 2413
2414 } // namespace blink 2414 } // namespace blink
2415 2415
2416 #endif // Heap_h 2416 #endif // Heap_h
OLDNEW
« no previous file with comments | « no previous file | Source/platform/heap/Heap.cpp » ('j') | Source/platform/heap/Visitor.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698