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

Side by Side Diff: Source/core/fetch/Resource.cpp

Issue 424633002: Oilpan: Prepare to move Resource to Oilpan heap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: unregister -> register Created 6 years, 4 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/core/fetch/Resource.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) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org)
4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org)
5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
6 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 6 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
7 7
8 This library is free software; you can redistribute it and/or 8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Library General Public 9 modify it under the terms of the GNU Library General Public
10 License as published by the Free Software Foundation; either 10 License as published by the Free Software Foundation; either
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 , m_requestedFromNetworkingLayer(false) 109 , m_requestedFromNetworkingLayer(false)
110 , m_loading(false) 110 , m_loading(false)
111 , m_switchingClientsToRevalidatedResource(false) 111 , m_switchingClientsToRevalidatedResource(false)
112 , m_type(type) 112 , m_type(type)
113 , m_status(Pending) 113 , m_status(Pending)
114 , m_wasPurged(false) 114 , m_wasPurged(false)
115 , m_needsSynchronousCacheHit(false) 115 , m_needsSynchronousCacheHit(false)
116 #ifdef ENABLE_RESOURCE_IS_DELETED_CHECK 116 #ifdef ENABLE_RESOURCE_IS_DELETED_CHECK
117 , m_deleted(false) 117 , m_deleted(false)
118 #endif 118 #endif
119 , m_resourceToRevalidate(0) 119 , m_resourceToRevalidate(nullptr)
120 , m_proxyResource(0) 120 , m_proxyResource(nullptr)
121 { 121 {
122 ASSERT(m_type == unsigned(type)); // m_type is a bitfield, so this tests car eless updates of the enum. 122 ASSERT(m_type == unsigned(type)); // m_type is a bitfield, so this tests car eless updates of the enum.
123 #ifndef NDEBUG 123 #ifndef NDEBUG
124 cachedResourceLeakCounter.increment(); 124 cachedResourceLeakCounter.increment();
125 #endif 125 #endif
126 memoryCache()->registerLiveResource(*this);
126 127
127 if (!m_resourceRequest.url().hasFragmentIdentifier()) 128 if (!m_resourceRequest.url().hasFragmentIdentifier())
128 return; 129 return;
129 KURL urlForCache = MemoryCache::removeFragmentIdentifierIfNeeded(m_resourceR equest.url()); 130 KURL urlForCache = MemoryCache::removeFragmentIdentifierIfNeeded(m_resourceR equest.url());
130 if (urlForCache.hasFragmentIdentifier()) 131 if (urlForCache.hasFragmentIdentifier())
131 return; 132 return;
132 m_fragmentIdentifierForRequest = m_resourceRequest.url().fragmentIdentifier( ); 133 m_fragmentIdentifierForRequest = m_resourceRequest.url().fragmentIdentifier( );
133 m_resourceRequest.setURL(urlForCache); 134 m_resourceRequest.setURL(urlForCache);
134 } 135 }
135 136
(...skipping 11 matching lines...) Expand all
147 #endif 148 #endif
148 #ifndef NDEBUG 149 #ifndef NDEBUG
149 cachedResourceLeakCounter.decrement(); 150 cachedResourceLeakCounter.decrement();
150 #endif 151 #endif
151 } 152 }
152 153
153 void Resource::dispose() 154 void Resource::dispose()
154 { 155 {
155 } 156 }
156 157
158 void Resource::trace(Visitor* visitor)
159 {
160 visitor->trace(m_resourceToRevalidate);
161 visitor->trace(m_proxyResource);
162 }
163
157 void Resource::failBeforeStarting() 164 void Resource::failBeforeStarting()
158 { 165 {
159 WTF_LOG(ResourceLoading, "Cannot start loading '%s'", url().string().latin1( ).data()); 166 WTF_LOG(ResourceLoading, "Cannot start loading '%s'", url().string().latin1( ).data());
160 error(Resource::LoadError); 167 error(Resource::LoadError);
161 } 168 }
162 169
163 void Resource::load(ResourceFetcher* fetcher, const ResourceLoaderOptions& optio ns) 170 void Resource::load(ResourceFetcher* fetcher, const ResourceLoaderOptions& optio ns)
164 { 171 {
165 if (!fetcher->frame()) { 172 if (!fetcher->frame()) {
166 failBeforeStarting(); 173 failBeforeStarting();
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 m_loader->cancelIfNotFinishing(); 556 m_loader->cancelIfNotFinishing();
550 if (m_status != Cached) 557 if (m_status != Cached)
551 memoryCache()->remove(this); 558 memoryCache()->remove(this);
552 } 559 }
553 560
554 bool Resource::deleteIfPossible() 561 bool Resource::deleteIfPossible()
555 { 562 {
556 if (canDelete() && !memoryCache()->contains(this)) { 563 if (canDelete() && !memoryCache()->contains(this)) {
557 InspectorInstrumentation::willDestroyResource(this); 564 InspectorInstrumentation::willDestroyResource(this);
558 dispose(); 565 dispose();
566 memoryCache()->unregisterLiveResource(*this);
567 #if !ENABLE(OILPAN)
559 delete this; 568 delete this;
569 #endif
560 return true; 570 return true;
561 } 571 }
562 return false; 572 return false;
563 } 573 }
564 574
565 void Resource::setDecodedSize(size_t decodedSize) 575 void Resource::setDecodedSize(size_t decodedSize)
566 { 576 {
567 if (decodedSize == m_decodedSize) 577 if (decodedSize == m_decodedSize)
568 return; 578 return;
569 size_t oldSize = size(); 579 size_t oldSize = size();
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 } 657 }
648 658
649 void Resource::clearResourceToRevalidate() 659 void Resource::clearResourceToRevalidate()
650 { 660 {
651 ASSERT(m_resourceToRevalidate); 661 ASSERT(m_resourceToRevalidate);
652 if (m_switchingClientsToRevalidatedResource) 662 if (m_switchingClientsToRevalidatedResource)
653 return; 663 return;
654 664
655 // A resource may start revalidation before this method has been called, so check that this resource is still the proxy resource before clearing it out. 665 // A resource may start revalidation before this method has been called, so check that this resource is still the proxy resource before clearing it out.
656 if (m_resourceToRevalidate->m_proxyResource == this) { 666 if (m_resourceToRevalidate->m_proxyResource == this) {
657 m_resourceToRevalidate->m_proxyResource = 0; 667 m_resourceToRevalidate->m_proxyResource = nullptr;
658 m_resourceToRevalidate->deleteIfPossible(); 668 m_resourceToRevalidate->deleteIfPossible();
659 } 669 }
660 m_handlesToRevalidate.clear(); 670 m_handlesToRevalidate.clear();
661 m_resourceToRevalidate = 0; 671 m_resourceToRevalidate = nullptr;
662 deleteIfPossible(); 672 deleteIfPossible();
663 } 673 }
664 674
665 void Resource::switchClientsToRevalidatedResource() 675 void Resource::switchClientsToRevalidatedResource()
666 { 676 {
667 ASSERT(m_resourceToRevalidate); 677 ASSERT(m_resourceToRevalidate);
668 ASSERT(memoryCache()->contains(m_resourceToRevalidate)); 678 ASSERT(memoryCache()->contains(m_resourceToRevalidate));
669 ASSERT(!memoryCache()->contains(this)); 679 ASSERT(!memoryCache()->contains(this));
670 680
671 WTF_LOG(ResourceLoading, "Resource %p switchClientsToRevalidatedResource %p" , this, m_resourceToRevalidate); 681 WTF_LOG(ResourceLoading, "Resource %p switchClientsToRevalidatedResource %p" , this, m_resourceToRevalidate.get());
672 682
673 m_resourceToRevalidate->m_identifier = m_identifier; 683 m_resourceToRevalidate->m_identifier = m_identifier;
674 684
675 m_switchingClientsToRevalidatedResource = true; 685 m_switchingClientsToRevalidatedResource = true;
676 HashSet<ResourcePtrBase*>::iterator end = m_handlesToRevalidate.end(); 686 HashSet<ResourcePtrBase*>::iterator end = m_handlesToRevalidate.end();
677 for (HashSet<ResourcePtrBase*>::iterator it = m_handlesToRevalidate.begin(); it != end; ++it) { 687 for (HashSet<ResourcePtrBase*>::iterator it = m_handlesToRevalidate.begin(); it != end; ++it) {
678 ResourcePtrBase* handle = *it; 688 ResourcePtrBase* handle = *it;
679 handle->m_resource = m_resourceToRevalidate; 689 handle->m_resource = m_resourceToRevalidate;
680 m_resourceToRevalidate->registerHandle(handle); 690 m_resourceToRevalidate->registerHandle(handle);
681 --m_handleCount; 691 --m_handleCount;
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 return "ImportResource"; 1005 return "ImportResource";
996 case Resource::Media: 1006 case Resource::Media:
997 return "Media"; 1007 return "Media";
998 } 1008 }
999 ASSERT_NOT_REACHED(); 1009 ASSERT_NOT_REACHED();
1000 return "Unknown"; 1010 return "Unknown";
1001 } 1011 }
1002 #endif // !LOG_DISABLED 1012 #endif // !LOG_DISABLED
1003 1013
1004 } 1014 }
OLDNEW
« no previous file with comments | « Source/core/fetch/Resource.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698