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

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

Issue 730443002: Oilpan: We shouldn't calculate allocationSizeFromSize twice (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | Source/platform/heap/Heap.cpp » ('j') | no next file with comments »
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 798 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 809
810 virtual PassOwnPtr<BaseHeap> split(int numberOfNormalPages) override; 810 virtual PassOwnPtr<BaseHeap> split(int numberOfNormalPages) override;
811 virtual void merge(PassOwnPtr<BaseHeap> splitOffBase) override; 811 virtual void merge(PassOwnPtr<BaseHeap> splitOffBase) override;
812 812
813 void removePageFromHeap(HeapPage<Header>*); 813 void removePageFromHeap(HeapPage<Header>*);
814 814
815 PLATFORM_EXPORT void promptlyFreeObject(Header*); 815 PLATFORM_EXPORT void promptlyFreeObject(Header*);
816 816
817 private: 817 private:
818 void addPageToHeap(const GCInfo*); 818 void addPageToHeap(const GCInfo*);
819 PLATFORM_EXPORT Address outOfLineAllocate(size_t, const GCInfo*); 819 PLATFORM_EXPORT Address outOfLineAllocate(size_t payloadSize, size_t allocat ionSize, const GCInfo*);
820 static size_t allocationSizeFromSize(size_t); 820 static size_t allocationSizeFromSize(size_t);
821 PLATFORM_EXPORT Address allocateLargeObject(size_t, const GCInfo*); 821 PLATFORM_EXPORT Address allocateLargeObject(size_t, const GCInfo*);
822 Address currentAllocationPoint() const { return m_currentAllocationPoint; } 822 Address currentAllocationPoint() const { return m_currentAllocationPoint; }
823 size_t remainingAllocationSize() const { return m_remainingAllocationSize; } 823 size_t remainingAllocationSize() const { return m_remainingAllocationSize; }
824 bool ownsNonEmptyAllocationArea() const { return currentAllocationPoint() && remainingAllocationSize(); } 824 bool ownsNonEmptyAllocationArea() const { return currentAllocationPoint() && remainingAllocationSize(); }
825 void setAllocationPoint(Address point, size_t size) 825 void setAllocationPoint(Address point, size_t size)
826 { 826 {
827 ASSERT(!point || heapPageFromAddress(point)); 827 ASSERT(!point || heapPageFromAddress(point));
828 ASSERT(size <= HeapPage<Header>::payloadSize()); 828 ASSERT(size <= HeapPage<Header>::payloadSize());
829 updateRemainingAllocationSize(); 829 updateRemainingAllocationSize();
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
1395 ASSERT(!(reinterpret_cast<uintptr_t>(result) & allocationMask)); 1395 ASSERT(!(reinterpret_cast<uintptr_t>(result) & allocationMask));
1396 1396
1397 // Unpoison the memory used for the object (payload). 1397 // Unpoison the memory used for the object (payload).
1398 ASAN_UNPOISON_MEMORY_REGION(result, allocationSize - sizeof(Header)); 1398 ASAN_UNPOISON_MEMORY_REGION(result, allocationSize - sizeof(Header));
1399 #if ENABLE(ASSERT) || defined(LEAK_SANITIZER) || defined(ADDRESS_SANITIZER) 1399 #if ENABLE(ASSERT) || defined(LEAK_SANITIZER) || defined(ADDRESS_SANITIZER)
1400 memset(result, 0, allocationSize - sizeof(Header)); 1400 memset(result, 0, allocationSize - sizeof(Header));
1401 #endif 1401 #endif
1402 ASSERT(heapPageFromAddress(headerAddress + allocationSize - 1)); 1402 ASSERT(heapPageFromAddress(headerAddress + allocationSize - 1));
1403 return result; 1403 return result;
1404 } 1404 }
1405 return outOfLineAllocate(size, gcInfo); 1405 return outOfLineAllocate(size, allocationSize, gcInfo);
1406 } 1406 }
1407 1407
1408 template<typename T, typename HeapTraits> 1408 template<typename T, typename HeapTraits>
1409 Address Heap::allocate(size_t size) 1409 Address Heap::allocate(size_t size)
1410 { 1410 {
1411 ThreadState* state = ThreadStateFor<ThreadingTrait<T>::Affinity>::state(); 1411 ThreadState* state = ThreadStateFor<ThreadingTrait<T>::Affinity>::state();
1412 ASSERT(state->isAllocationAllowed()); 1412 ASSERT(state->isAllocationAllowed());
1413 const GCInfo* gcInfo = GCInfoTrait<T>::get(); 1413 const GCInfo* gcInfo = GCInfoTrait<T>::get();
1414 int heapIndex = HeapTraits::index(gcInfo->hasFinalizer(), size); 1414 int heapIndex = HeapTraits::index(gcInfo->hasFinalizer(), size);
1415 BaseHeap* heap = state->heap(heapIndex); 1415 BaseHeap* heap = state->heap(heapIndex);
(...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after
2418 }; 2418 };
2419 2419
2420 template<typename T> 2420 template<typename T>
2421 struct IfWeakMember<WeakMember<T> > { 2421 struct IfWeakMember<WeakMember<T> > {
2422 static bool isDead(Visitor* visitor, const WeakMember<T>& t) { return !visit or->isAlive(t.get()); } 2422 static bool isDead(Visitor* visitor, const WeakMember<T>& t) { return !visit or->isAlive(t.get()); }
2423 }; 2423 };
2424 2424
2425 } // namespace blink 2425 } // namespace blink
2426 2426
2427 #endif // Heap_h 2427 #endif // Heap_h
OLDNEW
« no previous file with comments | « no previous file | Source/platform/heap/Heap.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698