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

Side by Side Diff: third_party/WebKit/Source/platform/SharedBuffer.h

Issue 2247073007: Make SharedBuffer in Resource non-discardable and remove PurgeableVector (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@SharedBuffer_DoNotUnlock
Patch Set: Rebase. Created 4 years, 3 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. 2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
3 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. 3 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 10 matching lines...) Expand all
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */ 25 */
26 26
27 #ifndef SharedBuffer_h 27 #ifndef SharedBuffer_h
28 #define SharedBuffer_h 28 #define SharedBuffer_h
29 29
30 #include "platform/PlatformExport.h" 30 #include "platform/PlatformExport.h"
31 #include "platform/PurgeableVector.h"
32 #include "third_party/skia/include/core/SkData.h" 31 #include "third_party/skia/include/core/SkData.h"
33 #include "wtf/Forward.h" 32 #include "wtf/Forward.h"
34 #include "wtf/RefCounted.h" 33 #include "wtf/RefCounted.h"
34 #include "wtf/Vector.h"
35 #include "wtf/text/WTFString.h" 35 #include "wtf/text/WTFString.h"
36 36
37 namespace blink { 37 namespace blink {
38 38
39 class WebProcessMemoryDump; 39 class WebProcessMemoryDump;
40 40
41 class PLATFORM_EXPORT SharedBuffer : public RefCounted<SharedBuffer> { 41 class PLATFORM_EXPORT SharedBuffer : public RefCounted<SharedBuffer> {
42 public: 42 public:
43 enum : unsigned { kSegmentSize = 0x1000 }; 43 enum : unsigned { kSegmentSize = 0x1000 };
44 44
(...skipping 13 matching lines...) Expand all
58 return adoptRef(new SharedBuffer(data, size)); 58 return adoptRef(new SharedBuffer(data, size));
59 } 59 }
60 60
61 HAS_STRICTLY_TYPED_ARG 61 HAS_STRICTLY_TYPED_ARG
62 static PassRefPtr<SharedBuffer> create(const unsigned char* data, STRICTLY_T YPED_ARG(size)) 62 static PassRefPtr<SharedBuffer> create(const unsigned char* data, STRICTLY_T YPED_ARG(size))
63 { 63 {
64 STRICT_ARG_TYPE(size_t); 64 STRICT_ARG_TYPE(size_t);
65 return adoptRef(new SharedBuffer(data, size)); 65 return adoptRef(new SharedBuffer(data, size));
66 } 66 }
67 67
68 HAS_STRICTLY_TYPED_ARG
69 static PassRefPtr<SharedBuffer> createPurgeable(const char* data, STRICTLY_T YPED_ARG(size))
70 {
71 STRICT_ARG_TYPE(size_t);
72 return adoptRef(new SharedBuffer(data, size, PurgeableVector::Purgeable) );
73 }
74
75 static PassRefPtr<SharedBuffer> adoptVector(Vector<char>&); 68 static PassRefPtr<SharedBuffer> adoptVector(Vector<char>&);
76 69
77 ~SharedBuffer(); 70 ~SharedBuffer();
78 71
79 // Calling this function will force internal segmented buffers to be merged 72 // Calling this function will force internal segmented buffers to be merged
80 // into a flat buffer. Use getSomeData() whenever possible for better 73 // into a flat buffer. Use getSomeData() whenever possible for better
81 // performance. 74 // performance.
82 const char* data() const; 75 const char* data() const;
83 76
84 size_t size() const; 77 size_t size() const;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 // SkData without merging segmented buffers into a flat buffer. 138 // SkData without merging segmented buffers into a flat buffer.
146 sk_sp<SkData> getAsSkData() const; 139 sk_sp<SkData> getAsSkData() const;
147 140
148 void onMemoryDump(const String& dumpPrefix, WebProcessMemoryDump*) const; 141 void onMemoryDump(const String& dumpPrefix, WebProcessMemoryDump*) const;
149 142
150 private: 143 private:
151 SharedBuffer(); 144 SharedBuffer();
152 explicit SharedBuffer(size_t); 145 explicit SharedBuffer(size_t);
153 SharedBuffer(const char*, size_t); 146 SharedBuffer(const char*, size_t);
154 SharedBuffer(const unsigned char*, size_t); 147 SharedBuffer(const unsigned char*, size_t);
155 SharedBuffer(const char*, size_t, PurgeableVector::PurgeableOption);
156 148
157 // See SharedBuffer::data(). 149 // See SharedBuffer::data().
158 void mergeSegmentsIntoBuffer() const; 150 void mergeSegmentsIntoBuffer() const;
159 151
160 void appendInternal(const char* data, size_t); 152 void appendInternal(const char* data, size_t);
161 bool getAsBytesInternal(void* dest, size_t, size_t) const; 153 bool getAsBytesInternal(void* dest, size_t, size_t) const;
162 size_t getSomeDataInternal(const char*& data, size_t position) const; 154 size_t getSomeDataInternal(const char*& data, size_t position) const;
163 155
164 size_t m_size; 156 size_t m_size;
165 mutable PurgeableVector m_buffer; 157 mutable Vector<char> m_buffer;
166 mutable Vector<char*> m_segments; 158 mutable Vector<char*> m_segments;
167 }; 159 };
168 160
169 } // namespace blink 161 } // namespace blink
170 162
171 #endif // SharedBuffer_h 163 #endif // SharedBuffer_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/PurgeableVectorTest.cpp ('k') | third_party/WebKit/Source/platform/SharedBuffer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698