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

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

Issue 661603005: Oilpan: Introduce class MainThreadOnly (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « Source/platform/heap/Handle.h ('k') | 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 1532 matching lines...) Expand 10 before | Expand all | Expand 10 after
1543 1543
1544 template<typename T> 1544 template<typename T>
1545 static T& getOther(T* other) 1545 static T& getOther(T* other)
1546 { 1546 {
1547 return *other; 1547 return *other;
1548 } 1548 }
1549 1549
1550 static void enterNoAllocationScope() 1550 static void enterNoAllocationScope()
1551 { 1551 {
1552 #if ENABLE(ASSERT) 1552 #if ENABLE(ASSERT)
1553 ThreadStateFor<AnyThread>::state()->enterNoAllocationScope(); 1553 ThreadStateFor<AnyThreadAffinity>::state()->enterNoAllocationScope();
1554 #endif 1554 #endif
1555 } 1555 }
1556 1556
1557 static void leaveNoAllocationScope() 1557 static void leaveNoAllocationScope()
1558 { 1558 {
1559 #if ENABLE(ASSERT) 1559 #if ENABLE(ASSERT)
1560 ThreadStateFor<AnyThread>::state()->leaveNoAllocationScope(); 1560 ThreadStateFor<AnyThreadAffinity>::state()->leaveNoAllocationScope();
1561 #endif 1561 #endif
1562 } 1562 }
1563 1563
1564 private: 1564 private:
1565 template<typename T, size_t u, typename V> friend class WTF::Vector; 1565 template<typename T, size_t u, typename V> friend class WTF::Vector;
1566 template<typename T, typename U, typename V, typename W> friend class WTF::H ashSet; 1566 template<typename T, typename U, typename V, typename W> friend class WTF::H ashSet;
1567 template<typename T, typename U, typename V, typename W, typename X, typenam e Y> friend class WTF::HashMap; 1567 template<typename T, typename U, typename V, typename W, typename X, typenam e Y> friend class WTF::HashMap;
1568 }; 1568 };
1569 1569
1570 template<typename Value> 1570 template<typename Value>
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
1754 }; 1754 };
1755 1755
1756 template<typename T> 1756 template<typename T>
1757 struct ThreadingTrait<WeakMember<T> > { 1757 struct ThreadingTrait<WeakMember<T> > {
1758 static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity; 1758 static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity;
1759 }; 1759 };
1760 1760
1761 template<typename Key, typename Value, typename T, typename U, typename V> 1761 template<typename Key, typename Value, typename T, typename U, typename V>
1762 struct ThreadingTrait<HashMap<Key, Value, T, U, V, HeapAllocator> > { 1762 struct ThreadingTrait<HashMap<Key, Value, T, U, V, HeapAllocator> > {
1763 static const ThreadAffinity Affinity = 1763 static const ThreadAffinity Affinity =
1764 (ThreadingTrait<Key>::Affinity == MainThreadOnly) 1764 (ThreadingTrait<Key>::Affinity == MainThreadAffinity)
1765 && (ThreadingTrait<Value>::Affinity == MainThreadOnly) ? MainThreadOnly : AnyThread; 1765 && (ThreadingTrait<Value>::Affinity == MainThreadAffinity) ? MainThreadA ffinity : AnyThreadAffinity;
1766 }; 1766 };
1767 1767
1768 template<typename First, typename Second> 1768 template<typename First, typename Second>
1769 struct ThreadingTrait<WTF::KeyValuePair<First, Second> > { 1769 struct ThreadingTrait<WTF::KeyValuePair<First, Second> > {
1770 static const ThreadAffinity Affinity = 1770 static const ThreadAffinity Affinity =
1771 (ThreadingTrait<First>::Affinity == MainThreadOnly) 1771 (ThreadingTrait<First>::Affinity == MainThreadAffinity)
1772 && (ThreadingTrait<Second>::Affinity == MainThreadOnly) ? MainThreadOnly : AnyThread; 1772 && (ThreadingTrait<Second>::Affinity == MainThreadAffinity) ? MainThread Affinity : AnyThreadAffinity;
1773 }; 1773 };
1774 1774
1775 template<typename T, typename U, typename V> 1775 template<typename T, typename U, typename V>
1776 struct ThreadingTrait<HashSet<T, U, V, HeapAllocator> > { 1776 struct ThreadingTrait<HashSet<T, U, V, HeapAllocator> > {
1777 static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity; 1777 static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity;
1778 }; 1778 };
1779 1779
1780 1780
1781 template<typename T, size_t inlineCapacity> 1781 template<typename T, size_t inlineCapacity>
1782 struct ThreadingTrait<Vector<T, inlineCapacity, HeapAllocator> > { 1782 struct ThreadingTrait<Vector<T, inlineCapacity, HeapAllocator> > {
(...skipping 13 matching lines...) Expand all
1796 template<typename T, typename U, typename V> 1796 template<typename T, typename U, typename V>
1797 struct ThreadingTrait<HashCountedSet<T, U, V, HeapAllocator> > { 1797 struct ThreadingTrait<HashCountedSet<T, U, V, HeapAllocator> > {
1798 static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity; 1798 static const ThreadAffinity Affinity = ThreadingTrait<T>::Affinity;
1799 }; 1799 };
1800 1800
1801 template<typename Table> 1801 template<typename Table>
1802 struct ThreadingTrait<HeapHashTableBacking<Table> > { 1802 struct ThreadingTrait<HeapHashTableBacking<Table> > {
1803 typedef typename Table::KeyType Key; 1803 typedef typename Table::KeyType Key;
1804 typedef typename Table::ValueType Value; 1804 typedef typename Table::ValueType Value;
1805 static const ThreadAffinity Affinity = 1805 static const ThreadAffinity Affinity =
1806 (ThreadingTrait<Key>::Affinity == MainThreadOnly) 1806 (ThreadingTrait<Key>::Affinity == MainThreadAffinity)
1807 && (ThreadingTrait<Value>::Affinity == MainThreadOnly) ? MainThreadOnly : AnyThread; 1807 && (ThreadingTrait<Value>::Affinity == MainThreadAffinity) ? MainThreadA ffinity : AnyThreadAffinity;
1808 }; 1808 };
1809 1809
1810 template<typename T, typename U, typename V, typename W, typename X> 1810 template<typename T, typename U, typename V, typename W, typename X>
1811 struct ThreadingTrait<HeapHashMap<T, U, V, W, X> > : public ThreadingTrait<HashM ap<T, U, V, W, X, HeapAllocator> > { }; 1811 struct ThreadingTrait<HeapHashMap<T, U, V, W, X> > : public ThreadingTrait<HashM ap<T, U, V, W, X, HeapAllocator> > { };
1812 1812
1813 template<typename T, typename U, typename V> 1813 template<typename T, typename U, typename V>
1814 struct ThreadingTrait<HeapHashSet<T, U, V> > : public ThreadingTrait<HashSet<T, U, V, HeapAllocator> > { }; 1814 struct ThreadingTrait<HeapHashSet<T, U, V> > : public ThreadingTrait<HashSet<T, U, V, HeapAllocator> > { };
1815 1815
1816 template<typename T, size_t inlineCapacity> 1816 template<typename T, size_t inlineCapacity>
1817 struct ThreadingTrait<HeapVector<T, inlineCapacity> > : public ThreadingTrait<Ve ctor<T, inlineCapacity, HeapAllocator> > { }; 1817 struct ThreadingTrait<HeapVector<T, inlineCapacity> > : public ThreadingTrait<Ve ctor<T, inlineCapacity, HeapAllocator> > { };
(...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after
2385 }; 2385 };
2386 2386
2387 template<typename T> 2387 template<typename T>
2388 struct IfWeakMember<WeakMember<T> > { 2388 struct IfWeakMember<WeakMember<T> > {
2389 static bool isDead(Visitor* visitor, const WeakMember<T>& t) { return !visit or->isAlive(t.get()); } 2389 static bool isDead(Visitor* visitor, const WeakMember<T>& t) { return !visit or->isAlive(t.get()); }
2390 }; 2390 };
2391 2391
2392 } 2392 }
2393 2393
2394 #endif // Heap_h 2394 #endif // Heap_h
OLDNEW
« no previous file with comments | « Source/platform/heap/Handle.h ('k') | Source/platform/heap/Heap.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698