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

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

Issue 331493007: Oilpan: Remove converters between Persistent/Member and PassRefPtr/RefPtr. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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/modules/webmidi/MIDIConnectionEvent.h ('k') | no next file » | 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) 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 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 m_raw = 0; 353 m_raw = 0;
354 return result; 354 return result;
355 } 355 }
356 356
357 T& operator*() const { return *m_raw; } 357 T& operator*() const { return *m_raw; }
358 358
359 bool operator!() const { return !m_raw; } 359 bool operator!() const { return !m_raw; }
360 360
361 operator T*() const { return m_raw; } 361 operator T*() const { return m_raw; }
362 operator RawPtr<T>() const { return m_raw; } 362 operator RawPtr<T>() const { return m_raw; }
363 // FIXME: Oilpan: Remove this ASAP. Only here to make Node transition easier .
364 template<typename U>
365 operator PassRefPtr<U>() { return PassRefPtr<U>(m_raw); }
366 363
367 T* operator->() const { return *this; } 364 T* operator->() const { return *this; }
368 365
369 Persistent& operator=(const Persistent& other) 366 Persistent& operator=(const Persistent& other)
370 { 367 {
371 m_raw = other; 368 m_raw = other;
372 return *this; 369 return *this;
373 } 370 }
374 371
375 template<typename U> 372 template<typename U>
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 bool isHashTableDeletedValue() const { return m_raw == reinterpret_cast<T*>( -1); } 519 bool isHashTableDeletedValue() const { return m_raw == reinterpret_cast<T*>( -1); }
523 520
524 template<typename U> 521 template<typename U>
525 Member(const Persistent<U>& other) : m_raw(other) { } 522 Member(const Persistent<U>& other) : m_raw(other) { }
526 523
527 Member(const Member& other) : m_raw(other) { } 524 Member(const Member& other) : m_raw(other) { }
528 525
529 template<typename U> 526 template<typename U>
530 Member(const Member<U>& other) : m_raw(other) { } 527 Member(const Member<U>& other) : m_raw(other) { }
531 528
532 // FIXME: Oilpan: Get rid of these ASAP; this is only here to make
533 // Node hierarchy transition easier.
534 template<typename U>
535 Member(const PassRefPtr<U>& other) : m_raw(other.get()) { }
536
537 template<typename U>
538 Member(const RefPtr<U>& other) : m_raw(other.get()) { }
539
540 T* release() 529 T* release()
541 { 530 {
542 T* result = m_raw; 531 T* result = m_raw;
543 m_raw = 0; 532 m_raw = 0;
544 return result; 533 return result;
545 } 534 }
546 535
547 template<typename U> 536 template<typename U>
548 U* as() const 537 U* as() const
549 { 538 {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 return *this; 582 return *this;
594 } 583 }
595 584
596 void swap(Member<T>& other) { std::swap(m_raw, other.m_raw); } 585 void swap(Member<T>& other) { std::swap(m_raw, other.m_raw); }
597 586
598 T* get() const { return m_raw; } 587 T* get() const { return m_raw; }
599 588
600 void clear() { m_raw = 0; } 589 void clear() { m_raw = 0; }
601 590
602 591
603 // FIXME: Oilpan: Remove this ASAP. Only here to make Node transition easier .
604 template<typename U>
605 operator PassRefPtr<U>() { return PassRefPtr<U>(m_raw); }
606
607 protected: 592 protected:
608 void verifyTypeIsGarbageCollected() const 593 void verifyTypeIsGarbageCollected() const
609 { 594 {
610 COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, NonGarbageCollectedObjectInMember ); 595 COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, NonGarbageCollectedObjectInMember );
611 } 596 }
612 597
613 T* m_raw; 598 T* m_raw;
614 599
615 template<bool x, WTF::WeakHandlingFlag y, ShouldWeakPointersBeMarkedStrongly z, typename U, typename V> friend struct CollectionBackingTraceTrait; 600 template<bool x, WTF::WeakHandlingFlag y, ShouldWeakPointersBeMarkedStrongly z, typename U, typename V> friend struct CollectionBackingTraceTrait;
616 friend class Visitor; 601 friend class Visitor;
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 // Comparison operators between (Weak)Members and Persistents 729 // Comparison operators between (Weak)Members and Persistents
745 template<typename T, typename U> inline bool operator==(const Member<T>& a, cons t Member<U>& b) { return a.get() == b.get(); } 730 template<typename T, typename U> inline bool operator==(const Member<T>& a, cons t Member<U>& b) { return a.get() == b.get(); }
746 template<typename T, typename U> inline bool operator!=(const Member<T>& a, cons t Member<U>& b) { return a.get() != b.get(); } 731 template<typename T, typename U> inline bool operator!=(const Member<T>& a, cons t Member<U>& b) { return a.get() != b.get(); }
747 template<typename T, typename U> inline bool operator==(const Member<T>& a, cons t Persistent<U>& b) { return a.get() == b.get(); } 732 template<typename T, typename U> inline bool operator==(const Member<T>& a, cons t Persistent<U>& b) { return a.get() == b.get(); }
748 template<typename T, typename U> inline bool operator!=(const Member<T>& a, cons t Persistent<U>& b) { return a.get() != b.get(); } 733 template<typename T, typename U> inline bool operator!=(const Member<T>& a, cons t Persistent<U>& b) { return a.get() != b.get(); }
749 template<typename T, typename U> inline bool operator==(const Persistent<T>& a, const Member<U>& b) { return a.get() == b.get(); } 734 template<typename T, typename U> inline bool operator==(const Persistent<T>& a, const Member<U>& b) { return a.get() == b.get(); }
750 template<typename T, typename U> inline bool operator!=(const Persistent<T>& a, const Member<U>& b) { return a.get() != b.get(); } 735 template<typename T, typename U> inline bool operator!=(const Persistent<T>& a, const Member<U>& b) { return a.get() != b.get(); }
751 template<typename T, typename U> inline bool operator==(const Persistent<T>& a, const Persistent<U>& b) { return a.get() == b.get(); } 736 template<typename T, typename U> inline bool operator==(const Persistent<T>& a, const Persistent<U>& b) { return a.get() == b.get(); }
752 template<typename T, typename U> inline bool operator!=(const Persistent<T>& a, const Persistent<U>& b) { return a.get() != b.get(); } 737 template<typename T, typename U> inline bool operator!=(const Persistent<T>& a, const Persistent<U>& b) { return a.get() != b.get(); }
753 738
754 // FIXME: Oilpan: Get rid of these ASAP; only here to make Node transition easie r.
755 template<typename T, typename U> inline bool operator==(const Member<T>& a, cons t RefPtr<U>& b) { return a.get() == b.get(); }
756 template<typename T, typename U> inline bool operator!=(const Member<T>& a, cons t RefPtr<U>& b) { return a.get() != b.get(); }
757 template<typename T, typename U> inline bool operator==(const RefPtr<T>& a, cons t Member<U>& b) { return a.get() == b.get(); }
758 template<typename T, typename U> inline bool operator!=(const RefPtr<T>& a, cons t Member<U>& b) { return a.get() != b.get(); }
759 template<typename T, typename U> inline bool operator==(const Member<T>& a, cons t PassRefPtr<U>& b) { return a.get() == b.get(); }
760 template<typename T, typename U> inline bool operator!=(const Member<T>& a, cons t PassRefPtr<U>& b) { return a.get() != b.get(); }
761 template<typename T, typename U> inline bool operator==(const PassRefPtr<T>& a, const Member<U>& b) { return a.get() == b.get(); }
762 template<typename T, typename U> inline bool operator!=(const PassRefPtr<T>& a, const Member<U>& b) { return a.get() != b.get(); }
763
764 // CPP-defined type names for the transition period where we want to 739 // CPP-defined type names for the transition period where we want to
765 // support both reference counting and garbage collection based on a 740 // support both reference counting and garbage collection based on a
766 // compile-time flag. 741 // compile-time flag.
767 // 742 //
768 // C++11 template aliases were initially used (with clang only, not 743 // C++11 template aliases were initially used (with clang only, not
769 // with GCC nor MSVC.) However, supporting both CPP defines and 744 // with GCC nor MSVC.) However, supporting both CPP defines and
770 // template aliases is problematic from outside a WebCore namespace 745 // template aliases is problematic from outside a WebCore namespace
771 // when Oilpan is disabled: e.g., 746 // when Oilpan is disabled: e.g.,
772 // WebCore::RefCountedWillBeGarbageCollected as a template alias would 747 // WebCore::RefCountedWillBeGarbageCollected as a template alias would
773 // uniquely resolve from within any namespace, but if it is backed by 748 // uniquely resolve from within any namespace, but if it is backed by
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
1201 struct ParamStorageTraits<T*> : public PointerParamStorageTraits<T*, WebCore::Is GarbageCollectedType<T>::value> { 1176 struct ParamStorageTraits<T*> : public PointerParamStorageTraits<T*, WebCore::Is GarbageCollectedType<T>::value> {
1202 }; 1177 };
1203 1178
1204 template<typename T> 1179 template<typename T>
1205 struct ParamStorageTraits<RawPtr<T> > : public PointerParamStorageTraits<T*, Web Core::IsGarbageCollectedType<T>::value> { 1180 struct ParamStorageTraits<RawPtr<T> > : public PointerParamStorageTraits<T*, Web Core::IsGarbageCollectedType<T>::value> {
1206 }; 1181 };
1207 1182
1208 } // namespace WTF 1183 } // namespace WTF
1209 1184
1210 #endif 1185 #endif
OLDNEW
« no previous file with comments | « Source/modules/webmidi/MIDIConnectionEvent.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698