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

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

Issue 720163002: Oilpan: Vector::reserveCapacity shouldn't reallocate backing storage always (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 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 297
298 NO_SANITIZE_ADDRESS 298 NO_SANITIZE_ADDRESS
299 bool isPromptlyFreed() { return (m_size & promptlyFreedMask) == promptlyFree dMask; } 299 bool isPromptlyFreed() { return (m_size & promptlyFreedMask) == promptlyFree dMask; }
300 300
301 NO_SANITIZE_ADDRESS 301 NO_SANITIZE_ADDRESS
302 void markPromptlyFreed() { m_size |= promptlyFreedMask; } 302 void markPromptlyFreed() { m_size |= promptlyFreedMask; }
303 303
304 NO_SANITIZE_ADDRESS 304 NO_SANITIZE_ADDRESS
305 size_t size() const { return m_size & sizeMask; } 305 size_t size() const { return m_size & sizeMask; }
306 306
307 NO_SANITIZE_ADDRESS
308 void setSize(size_t size) { m_size = (size | (m_size & ~sizeMask)); }
309
307 #if ENABLE(GC_PROFILE_HEAP) 310 #if ENABLE(GC_PROFILE_HEAP)
308 NO_SANITIZE_ADDRESS 311 NO_SANITIZE_ADDRESS
309 size_t encodedSize() const { return m_size; } 312 size_t encodedSize() const { return m_size; }
310 313
311 NO_SANITIZE_ADDRESS 314 NO_SANITIZE_ADDRESS
312 size_t age() const { return m_size >> maxHeapObjectSizeLog2; } 315 size_t age() const { return m_size >> maxHeapObjectSizeLog2; }
313 316
314 NO_SANITIZE_ADDRESS 317 NO_SANITIZE_ADDRESS
315 void incAge() 318 void incAge()
316 { 319 {
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 virtual void prepareHeapForTermination() override; 809 virtual void prepareHeapForTermination() override;
807 810
808 virtual int normalPageCount() override { return m_numberOfNormalPages; } 811 virtual int normalPageCount() override { return m_numberOfNormalPages; }
809 812
810 virtual PassOwnPtr<BaseHeap> split(int numberOfNormalPages) override; 813 virtual PassOwnPtr<BaseHeap> split(int numberOfNormalPages) override;
811 virtual void merge(PassOwnPtr<BaseHeap> splitOffBase) override; 814 virtual void merge(PassOwnPtr<BaseHeap> splitOffBase) override;
812 815
813 void removePageFromHeap(HeapPage<Header>*); 816 void removePageFromHeap(HeapPage<Header>*);
814 817
815 PLATFORM_EXPORT void promptlyFreeObject(Header*); 818 PLATFORM_EXPORT void promptlyFreeObject(Header*);
819 PLATFORM_EXPORT bool expandObject(Header*, size_t);
816 820
817 private: 821 private:
818 void addPageToHeap(const GCInfo*); 822 void addPageToHeap(const GCInfo*);
819 PLATFORM_EXPORT Address outOfLineAllocate(size_t, const GCInfo*); 823 PLATFORM_EXPORT Address outOfLineAllocate(size_t, const GCInfo*);
820 static size_t allocationSizeFromSize(size_t); 824 static size_t allocationSizeFromSize(size_t);
821 PLATFORM_EXPORT Address allocateLargeObject(size_t, const GCInfo*); 825 PLATFORM_EXPORT Address allocateLargeObject(size_t, const GCInfo*);
822 Address currentAllocationPoint() const { return m_currentAllocationPoint; } 826 Address currentAllocationPoint() const { return m_currentAllocationPoint; }
823 size_t remainingAllocationSize() const { return m_remainingAllocationSize; } 827 size_t remainingAllocationSize() const { return m_remainingAllocationSize; }
824 bool ownsNonEmptyAllocationArea() const { return currentAllocationPoint() && remainingAllocationSize(); } 828 bool ownsNonEmptyAllocationArea() const { return currentAllocationPoint() && remainingAllocationSize(); }
825 void setAllocationPoint(Address point, size_t size) 829 void setAllocationPoint(Address point, size_t size)
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after
1484 static Return zeroedBackingMalloc(size_t size) 1488 static Return zeroedBackingMalloc(size_t size)
1485 { 1489 {
1486 return backingMalloc<Return, Metadata>(size); 1490 return backingMalloc<Return, Metadata>(size);
1487 } 1491 }
1488 template <typename Return, typename Metadata> 1492 template <typename Return, typename Metadata>
1489 static Return malloc(size_t size) 1493 static Return malloc(size_t size)
1490 { 1494 {
1491 return reinterpret_cast<Return>(Heap::allocate<Metadata>(size)); 1495 return reinterpret_cast<Return>(Heap::allocate<Metadata>(size));
1492 } 1496 }
1493 PLATFORM_EXPORT static void backingFree(void* address); 1497 PLATFORM_EXPORT static void backingFree(void* address);
1498 PLATFORM_EXPORT static bool backingExpand(void*, size_t);
1494 1499
1495 static void free(void* address) { } 1500 static void free(void* address) { }
1496 template<typename T> 1501 template<typename T>
1497 static void* newArray(size_t bytes) 1502 static void* newArray(size_t bytes)
1498 { 1503 {
1499 ASSERT_NOT_REACHED(); 1504 ASSERT_NOT_REACHED();
1500 return 0; 1505 return 0;
1501 } 1506 }
1502 1507
1503 static void deleteArray(void* ptr) 1508 static void deleteArray(void* ptr)
(...skipping 914 matching lines...) Expand 10 before | Expand all | Expand 10 after
2418 }; 2423 };
2419 2424
2420 template<typename T> 2425 template<typename T>
2421 struct IfWeakMember<WeakMember<T> > { 2426 struct IfWeakMember<WeakMember<T> > {
2422 static bool isDead(Visitor* visitor, const WeakMember<T>& t) { return !visit or->isAlive(t.get()); } 2427 static bool isDead(Visitor* visitor, const WeakMember<T>& t) { return !visit or->isAlive(t.get()); }
2423 }; 2428 };
2424 2429
2425 } // namespace blink 2430 } // namespace blink
2426 2431
2427 #endif // Heap_h 2432 #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