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

Side by Side Diff: Source/heap/Handle.h

Issue 183833009: Oilpan: Allowing hashing of RawPtr. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 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 | « no previous file | Source/heap/HeapTest.cpp » ('j') | Source/wtf/HashTraits.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2014 Google Inc. All rights reserved. 2 * Copyright (C) 2014 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 709 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 static const bool needsDestruction = false; 720 static const bool needsDestruction = false;
721 // FIXME: The distinction between PeekInType and PassInType is there for 721 // FIXME: The distinction between PeekInType and PassInType is there for
722 // the sake of the reference counting handles. When they are gone the two 722 // the sake of the reference counting handles. When they are gone the two
723 // types can be merged into PassInType. 723 // types can be merged into PassInType.
724 // FIXME: Implement proper const'ness for iterator types. Requires support 724 // FIXME: Implement proper const'ness for iterator types. Requires support
725 // in the marking Visitor. 725 // in the marking Visitor.
726 typedef RawPtr<T> PeekInType; 726 typedef RawPtr<T> PeekInType;
727 typedef RawPtr<T> PassInType; 727 typedef RawPtr<T> PassInType;
728 typedef WebCore::Member<T>* IteratorGetType; 728 typedef WebCore::Member<T>* IteratorGetType;
729 typedef const WebCore::Member<T>* IteratorConstGetType; 729 typedef const WebCore::Member<T>* IteratorConstGetType;
730 typedef T* IteratorReferenceType; 730 typedef WebCore::Member<T>& IteratorReferenceType;
731 typedef T* IteratorConstReferenceType; 731 typedef T* const IteratorConstReferenceType;
732 static IteratorConstGetType getToConstGetConversion(const WebCore::Member<T> * x) { return x->get(); } 732 static IteratorReferenceType getToReferenceConversion(IteratorGetType x) { r eturn *x; }
733 static IteratorReferenceType getToReferenceConversion(IteratorGetType x) { r eturn x->get(); }
734 static IteratorConstReferenceType getToReferenceConstConversion(IteratorCons tGetType x) { return x->get(); } 733 static IteratorConstReferenceType getToReferenceConstConversion(IteratorCons tGetType x) { return x->get(); }
735 // FIXME: Similarly, there is no need for a distinction between PeekOutType 734 // FIXME: Similarly, there is no need for a distinction between PeekOutType
736 // and PassOutType without reference counting. 735 // and PassOutType without reference counting.
737 typedef T* PeekOutType; 736 typedef T* PeekOutType;
738 typedef T* PassOutType; 737 typedef T* PassOutType;
739 738
740 template<typename U> 739 template<typename U>
741 static void store(const U& value, WebCore::Member<T>& storage) { storage = v alue; } 740 static void store(const U& value, WebCore::Member<T>& storage) { storage = v alue; }
742 741
743 static PeekOutType peek(const WebCore::Member<T>& value) { return value; } 742 static PeekOutType peek(const WebCore::Member<T>& value) { return value; }
744 static PassOutType passOut(const WebCore::Member<T>& value) { return value; } 743 static PassOutType passOut(const WebCore::Member<T>& value) { return value; }
745 }; 744 };
746 745
747 template<typename T> struct HashTraits<WebCore::WeakMember<T> > : SimpleClassHas hTraits<WebCore::WeakMember<T> > { 746 template<typename T> struct HashTraits<WebCore::WeakMember<T> > : SimpleClassHas hTraits<WebCore::WeakMember<T> > {
748 static const bool needsDestruction = false; 747 static const bool needsDestruction = false;
749 // FIXME: The distinction between PeekInType and PassInType is there for 748 // FIXME: The distinction between PeekInType and PassInType is there for
750 // the sake of the reference counting handles. When they are gone the two 749 // the sake of the reference counting handles. When they are gone the two
751 // types can be merged into PassInType. 750 // types can be merged into PassInType.
752 // FIXME: Implement proper const'ness for iterator types. Requires support 751 // FIXME: Implement proper const'ness for iterator types. Requires support
753 // in the marking Visitor. 752 // in the marking Visitor.
754 typedef RawPtr<T> PeekInType; 753 typedef RawPtr<T> PeekInType;
755 typedef RawPtr<T> PassInType; 754 typedef RawPtr<T> PassInType;
756 typedef WebCore::WeakMember<T>* IteratorGetType; 755 typedef WebCore::WeakMember<T>* IteratorGetType;
757 typedef const WebCore::WeakMember<T>* IteratorConstGetType; 756 typedef const WebCore::WeakMember<T>* IteratorConstGetType;
758 typedef T* IteratorReferenceType; 757 typedef WebCore::WeakMember<T>& IteratorReferenceType;
759 typedef T* IteratorConstReferenceType; 758 typedef T* const IteratorConstReferenceType;
760 static IteratorConstGetType getToConstGetConversion(const WebCore::WeakMembe r<T>* x) { return x->get(); } 759 static IteratorReferenceType getToReferenceConversion(IteratorGetType x) { r eturn *x; }
761 static IteratorReferenceType getToReferenceConversion(IteratorGetType x) { r eturn x->get(); }
762 static IteratorConstReferenceType getToReferenceConstConversion(IteratorCons tGetType x) { return x->get(); } 760 static IteratorConstReferenceType getToReferenceConstConversion(IteratorCons tGetType x) { return x->get(); }
763 // FIXME: Similarly, there is no need for a distinction between PeekOutType 761 // FIXME: Similarly, there is no need for a distinction between PeekOutType
764 // and PassOutType without reference counting. 762 // and PassOutType without reference counting.
765 typedef T* PeekOutType; 763 typedef T* PeekOutType;
766 typedef T* PassOutType; 764 typedef T* PassOutType;
767 765
768 template<typename U> 766 template<typename U>
769 static void store(const U& value, WebCore::WeakMember<T>& storage) { storage = value; } 767 static void store(const U& value, WebCore::WeakMember<T>& storage) { storage = value; }
770 768
771 static PeekOutType peek(const WebCore::WeakMember<T>& value) { return value; } 769 static PeekOutType peek(const WebCore::WeakMember<T>& value) { return value; }
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 }; 839 };
842 840
843 template<typename T, typename U> 841 template<typename T, typename U>
844 struct NeedsTracing<HashMap<T, U> > { 842 struct NeedsTracing<HashMap<T, U> > {
845 static const bool value = false; 843 static const bool value = false;
846 }; 844 };
847 845
848 } // namespace WTF 846 } // namespace WTF
849 847
850 #endif 848 #endif
OLDNEW
« no previous file with comments | « no previous file | Source/heap/HeapTest.cpp » ('j') | Source/wtf/HashTraits.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698