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

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

Issue 106423003: [oilpan] Rename visit to mark. (Closed) Base URL: svn://svn.chromium.org/blink/branches/oilpan
Patch Set: Address comments. Created 7 years 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/core/xml/XMLHttpRequestUpload.h ('k') | Source/heap/Heap.h » ('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 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 template<typename A, typename B, typename C, typename D, typename E, typename F, typename G> class HashTableConstIterator; 53 template<typename A, typename B, typename C, typename D, typename E, typename F, typename G> class HashTableConstIterator;
54 54
55 } 55 }
56 56
57 namespace WebCore { 57 namespace WebCore {
58 58
59 // Forward declarations. 59 // Forward declarations.
60 template<typename T> class Member; 60 template<typename T> class Member;
61 template<typename T> class WeakMember; 61 template<typename T> class WeakMember;
62 template<typename T> struct HeapObjectHash; 62 template<typename T> struct HeapObjectHash;
63 template<typename T> struct CollectionVisitingTrait; 63 template<typename T> struct OffHeapCollectionTraceTrait;
64 64
65 #if defined(TRACE_GC_MARKING) && TRACE_GC_MARKING 65 #if defined(TRACE_GC_MARKING) && TRACE_GC_MARKING
66 // To print root names during marking for CollectionPersistent and Persistent ha ndles 66 // To print root names during marking for CollectionPersistent and Persistent ha ndles
67 // we prepend annotation objects to this fields using ANNOTATED_FIELD macro. 67 // we prepend annotation objects to this fields using ANNOTATED_FIELD macro.
68 // Annotation object must directly preceed Persistent handles in memory. 68 // Annotation object must directly preceed Persistent handles in memory.
69 // It is conservatively detected by the presence of magic. This can have some 69 // It is conservatively detected by the presence of magic. This can have some
70 // false-positives but TRACE_GC_MARKING is debugging functionality so 70 // false-positives but TRACE_GC_MARKING is debugging functionality so
71 // we don't care. 71 // we don't care.
72 typedef const char* (*NameCallback)(); 72 typedef const char* (*NameCallback)();
73 73
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 { 279 {
280 m_raw = 0; 280 m_raw = 0;
281 } 281 }
282 282
283 template<typename U> 283 template<typename U>
284 U* as() const 284 U* as() const
285 { 285 {
286 return static_cast<U*>(m_raw); 286 return static_cast<U*>(m_raw);
287 } 287 }
288 288
289 void trace(Visitor* visitor) { visitor->visit(m_raw); } 289 void trace(Visitor* visitor) { visitor->mark(m_raw); }
290 290
291 T* clear() 291 T* clear()
292 { 292 {
293 T* result = m_raw; 293 T* result = m_raw;
294 m_raw = 0; 294 m_raw = 0;
295 return result; 295 return result;
296 } 296 }
297 297
298 T* raw() const { return m_raw; } 298 T* raw() const { return m_raw; }
299 T& operator*() const { return *raw(); } 299 T& operator*() const { return *raw(); }
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 template<typename U, typename V> friend bool operator!=(const Persistent<U>& , const Member<V>&); 488 template<typename U, typename V> friend bool operator!=(const Persistent<U>& , const Member<V>&);
489 template<typename U, typename V> friend bool operator==(const Member<U>&, co nst Member<V>&); 489 template<typename U, typename V> friend bool operator==(const Member<U>&, co nst Member<V>&);
490 template<typename U, typename V> friend bool operator!=(const Member<U>&, co nst Member<V>&); 490 template<typename U, typename V> friend bool operator!=(const Member<U>&, co nst Member<V>&);
491 }; 491 };
492 492
493 template<typename T> 493 template<typename T>
494 class TraceTrait<Member<T> > { 494 class TraceTrait<Member<T> > {
495 public: 495 public:
496 static void trace(Visitor* visitor, void* self) 496 static void trace(Visitor* visitor, void* self)
497 { 497 {
498 TraceTrait<T>::visit(visitor, static_cast<Member<T>*>(self)->raw()); 498 TraceTrait<T>::mark(visitor, static_cast<Member<T>*>(self)->raw());
499 } 499 }
500 }; 500 };
501 501
502 template<typename T> 502 template<typename T>
503 class WeakMember : public Member<T> { 503 class WeakMember : public Member<T> {
504 public: 504 public:
505 WeakMember() : Member<T>() { } 505 WeakMember() : Member<T>() { }
506 506
507 WeakMember(T* raw) : Member<T>(raw) { } 507 WeakMember(T* raw) : Member<T>(raw) { }
508 508
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 explicit CollectionPersistent(const Collection& collection) : m_collection(c ollection) { } 590 explicit CollectionPersistent(const Collection& collection) : m_collection(c ollection) { }
591 CollectionPersistent& operator=(const Collection& collection) { m_collection = collection; return *this; } 591 CollectionPersistent& operator=(const Collection& collection) { m_collection = collection; return *this; }
592 592
593 Collection* operator->() { return &m_collection; } 593 Collection* operator->() { return &m_collection; }
594 const Collection* operator->() const { return &m_collection; } 594 const Collection* operator->() const { return &m_collection; }
595 Collection& operator*() { return m_collection; } 595 Collection& operator*() { return m_collection; }
596 const Collection& operator*() const { return m_collection; } 596 const Collection& operator*() const { return m_collection; }
597 597
598 void trace(Visitor* visitor) 598 void trace(Visitor* visitor)
599 { 599 {
600 CollectionVisitingTrait<Collection>::visit(visitor, m_collection); 600 OffHeapCollectionTraceTrait<Collection>::mark(visitor, m_collection);
601 } 601 }
602 602
603 #if defined(TRACE_GC_MARKING) && TRACE_GC_MARKING 603 #if defined(TRACE_GC_MARKING) && TRACE_GC_MARKING
604 virtual const char* name() OVERRIDE 604 virtual const char* name() OVERRIDE
605 { 605 {
606 ASSERT(this == static_cast<PersistentNode*>(this)); 606 ASSERT(this == static_cast<PersistentNode*>(this));
607 const char* n = FieldAnnotationBase::fromAddress(this); 607 const char* n = FieldAnnotationBase::fromAddress(this);
608 return n ? n : "CollectionPersistent"; 608 return n ? n : "CollectionPersistent";
609 } 609 }
610 #endif 610 #endif
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 } 710 }
711 711
712 static const bool heapAllocation = true; 712 static const bool heapAllocation = true;
713 713
714 typedef NoAllocation<MainThreadOnly> NoAllocationObject; 714 typedef NoAllocation<MainThreadOnly> NoAllocationObject;
715 715
716 typedef WebCore::Visitor Visitor; 716 typedef WebCore::Visitor Visitor;
717 717
718 static void visitHeapPointer(Visitor* visitor, const void* buffer) 718 static void visitHeapPointer(Visitor* visitor, const void* buffer)
719 { 719 {
720 visitor->visit(buffer, FinalizedHeapObjectHeader::fromPayload(buffer)->t raceCallback()); 720 visitor->mark(buffer, FinalizedHeapObjectHeader::fromPayload(buffer)->tr aceCallback());
721 } 721 }
722 722
723 static void visitWith(Visitor* visitor, const void* t) 723 static void adjustAndMark(Visitor* visitor, const void* t)
724 { 724 {
725 visitor->visit(t); 725 visitor->mark(t);
726 } 726 }
727 727
728 template<typename T, typename Traits> 728 template<typename T, typename Traits>
729 static void visitWith(Visitor* visitor, T& t) 729 static void adjustAndMark(Visitor* visitor, T& t)
730 { 730 {
731 VisitCollectionBackingTrait<Traits::needsVisiting, Traits::isWeak, false , T, Traits>::visit(visitor, t); 731 CollectionBackingTraceTrait<Traits::needsTracing, Traits::isWeak, false, T, Traits>::mark(visitor, t);
732 } 732 }
733 733
734 template<typename T> 734 template<typename T>
735 static bool hasDeadMember(Visitor* visitor, const T& t) 735 static bool hasDeadMember(Visitor* visitor, const T& t)
736 { 736 {
737 return false; 737 return false;
738 } 738 }
739 739
740 template<typename T> 740 template<typename T>
741 static bool hasDeadMember(Visitor* visitor, const Member<T>& t) 741 static bool hasDeadMember(Visitor* visitor, const Member<T>& t)
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
1273 // HeapObjectHash<T> instead. 1273 // HeapObjectHash<T> instead.
1274 template<typename T> struct DefaultHash<WebCore::Member<T> > { 1274 template<typename T> struct DefaultHash<WebCore::Member<T> > {
1275 typedef PtrHash<WebCore::Member<T> > Hash; 1275 typedef PtrHash<WebCore::Member<T> > Hash;
1276 }; 1276 };
1277 1277
1278 template<typename T> struct DefaultHash<WebCore::WeakMember<T> > { 1278 template<typename T> struct DefaultHash<WebCore::WeakMember<T> > {
1279 typedef PtrHash<WebCore::WeakMember<T> > Hash; 1279 typedef PtrHash<WebCore::WeakMember<T> > Hash;
1280 }; 1280 };
1281 1281
1282 template<typename T> 1282 template<typename T>
1283 struct NeedsVisiting<WebCore::Member<T> > { 1283 struct NeedsTracing<WebCore::Member<T> > {
1284 static const bool value = true; 1284 static const bool value = true;
1285 }; 1285 };
1286 1286
1287 template<typename T> 1287 template<typename T>
1288 struct IsWeak<WebCore::WeakMember<T> > { 1288 struct IsWeak<WebCore::WeakMember<T> > {
1289 static const bool value = true; 1289 static const bool value = true;
1290 }; 1290 };
1291 1291
1292 template<typename T, size_t inlinedCapacity> 1292 template<typename T, size_t inlinedCapacity>
1293 struct IsPod<WebCore::HeapVector<T, inlinedCapacity> > { 1293 struct IsPod<WebCore::HeapVector<T, inlinedCapacity> > {
1294 static const bool value = true; 1294 static const bool value = true;
1295 }; 1295 };
1296 1296
1297 template<typename T, size_t inlinedCapacity> 1297 template<typename T, size_t inlinedCapacity>
1298 struct NeedsVisiting<WebCore::HeapVector<T, inlinedCapacity> > { 1298 struct NeedsTracing<WebCore::HeapVector<T, inlinedCapacity> > {
1299 static const bool value = true; 1299 static const bool value = true;
1300 }; 1300 };
1301 1301
1302 #if TRACE_GC_USING_CLASSOF 1302 #if TRACE_GC_USING_CLASSOF
1303 #define DEFINE_CLASS_NAME(Type) \ 1303 #define DEFINE_CLASS_NAME(Type) \
1304 virtual const char* className() { return #Type; } 1304 virtual const char* className() { return #Type; }
1305 #else 1305 #else
1306 #define DEFINE_CLASS_NAME(Type) 1306 #define DEFINE_CLASS_NAME(Type)
1307 #endif 1307 #endif
1308 1308
(...skipping 11 matching lines...) Expand all
1320 // inject virtual className() getter into heap allocated types. 1320 // inject virtual className() getter into heap allocated types.
1321 // FIXME(oilpan): Rename DEFINE_SELF_HANDLE to DEFINE_CLASS_NAME. 1321 // FIXME(oilpan): Rename DEFINE_SELF_HANDLE to DEFINE_CLASS_NAME.
1322 #define DEFINE_SELF_HANDLE(Type) \ 1322 #define DEFINE_SELF_HANDLE(Type) \
1323 public: \ 1323 public: \
1324 DEFINE_CLASS_NAME(Type) \ 1324 DEFINE_CLASS_NAME(Type) \
1325 Type* nonConstSelfHandle() const { return const_cast<Type*>(this); } 1325 Type* nonConstSelfHandle() const { return const_cast<Type*>(this); }
1326 1326
1327 } 1327 }
1328 1328
1329 #endif 1329 #endif
OLDNEW
« no previous file with comments | « Source/core/xml/XMLHttpRequestUpload.h ('k') | Source/heap/Heap.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698