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

Side by Side Diff: third_party/WebKit/Source/platform/wtf/text/WTFString.cpp

Issue 2909613002: Replaced usage of RefPtr::Release with std::move wraps. (Closed)
Patch Set: Created 3 years, 7 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 * (C) 1999 Lars Knoll (knoll@kde.org) 2 * (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010, 2012 Apple Inc. All rights 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010, 2012 Apple Inc. All rights
4 * reserved. 4 * reserved.
5 * Copyright (C) 2007-2009 Torch Mobile, Inc. 5 * Copyright (C) 2007-2009 Torch Mobile, Inc.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 103
104 if (impl_->Is8Bit() && string.Is8Bit()) { 104 if (impl_->Is8Bit() && string.Is8Bit()) {
105 LChar* data; 105 LChar* data;
106 CHECK_LE(string.length(), 106 CHECK_LE(string.length(),
107 std::numeric_limits<unsigned>::max() - impl_->length()); 107 std::numeric_limits<unsigned>::max() - impl_->length());
108 RefPtr<StringImpl> new_impl = StringImpl::CreateUninitialized( 108 RefPtr<StringImpl> new_impl = StringImpl::CreateUninitialized(
109 impl_->length() + string.length(), data); 109 impl_->length() + string.length(), data);
110 memcpy(data, impl_->Characters8(), impl_->length() * sizeof(LChar)); 110 memcpy(data, impl_->Characters8(), impl_->length() * sizeof(LChar));
111 memcpy(data + impl_->length(), string.Characters8(), 111 memcpy(data + impl_->length(), string.Characters8(),
112 string.length() * sizeof(LChar)); 112 string.length() * sizeof(LChar));
113 impl_ = new_impl.Release(); 113 impl_ = std::move(new_impl);
114 return; 114 return;
115 } 115 }
116 116
117 UChar* data; 117 UChar* data;
118 CHECK_LE(string.length(), 118 CHECK_LE(string.length(),
119 std::numeric_limits<unsigned>::max() - impl_->length()); 119 std::numeric_limits<unsigned>::max() - impl_->length());
120 RefPtr<StringImpl> new_impl = 120 RefPtr<StringImpl> new_impl =
121 StringImpl::CreateUninitialized(impl_->length() + string.length(), data); 121 StringImpl::CreateUninitialized(impl_->length() + string.length(), data);
122 122
123 if (impl_->Is8Bit()) 123 if (impl_->Is8Bit())
124 StringImpl::CopyChars(data, impl_->Characters8(), impl_->length()); 124 StringImpl::CopyChars(data, impl_->Characters8(), impl_->length());
125 else 125 else
126 StringImpl::CopyChars(data, impl_->Characters16(), impl_->length()); 126 StringImpl::CopyChars(data, impl_->Characters16(), impl_->length());
127 127
128 if (string.Is8Bit()) 128 if (string.Is8Bit())
129 StringImpl::CopyChars(data + impl_->length(), string.Characters8(), 129 StringImpl::CopyChars(data + impl_->length(), string.Characters8(),
130 string.length()); 130 string.length());
131 else 131 else
132 StringImpl::CopyChars(data + impl_->length(), string.Characters16(), 132 StringImpl::CopyChars(data + impl_->length(), string.Characters16(),
133 string.length()); 133 string.length());
134 134
135 impl_ = new_impl.Release(); 135 impl_ = std::move(new_impl);
136 } 136 }
137 137
138 template <typename CharacterType> 138 template <typename CharacterType>
139 inline void String::AppendInternal(CharacterType c) { 139 inline void String::AppendInternal(CharacterType c) {
140 // FIXME: This is extremely inefficient. So much so that we might want to 140 // FIXME: This is extremely inefficient. So much so that we might want to
141 // take this out of String's API. We can make it better by optimizing the 141 // take this out of String's API. We can make it better by optimizing the
142 // case where exactly one String is pointing at this StringImpl, but even 142 // case where exactly one String is pointing at this StringImpl, but even
143 // then it's going to require a call into the allocator every single time. 143 // then it's going to require a call into the allocator every single time.
144 if (!impl_) { 144 if (!impl_) {
145 impl_ = StringImpl::Create(&c, 1); 145 impl_ = StringImpl::Create(&c, 1);
146 return; 146 return;
147 } 147 }
148 148
149 // FIXME: We should be able to create an 8 bit string via this code path. 149 // FIXME: We should be able to create an 8 bit string via this code path.
150 UChar* data; 150 UChar* data;
151 CHECK_LT(impl_->length(), std::numeric_limits<unsigned>::max()); 151 CHECK_LT(impl_->length(), std::numeric_limits<unsigned>::max());
152 RefPtr<StringImpl> new_impl = 152 RefPtr<StringImpl> new_impl =
153 StringImpl::CreateUninitialized(impl_->length() + 1, data); 153 StringImpl::CreateUninitialized(impl_->length() + 1, data);
154 if (impl_->Is8Bit()) 154 if (impl_->Is8Bit())
155 StringImpl::CopyChars(data, impl_->Characters8(), impl_->length()); 155 StringImpl::CopyChars(data, impl_->Characters8(), impl_->length());
156 else 156 else
157 StringImpl::CopyChars(data, impl_->Characters16(), impl_->length()); 157 StringImpl::CopyChars(data, impl_->Characters16(), impl_->length());
158 data[impl_->length()] = c; 158 data[impl_->length()] = c;
159 impl_ = new_impl.Release(); 159 impl_ = std::move(new_impl);
160 } 160 }
161 161
162 void String::append(LChar c) { 162 void String::append(LChar c) {
163 AppendInternal(c); 163 AppendInternal(c);
164 } 164 }
165 165
166 void String::append(UChar c) { 166 void String::append(UChar c) {
167 AppendInternal(c); 167 AppendInternal(c);
168 } 168 }
169 169
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 if (position >= length()) { 223 if (position >= length()) {
224 if (string.Is8Bit()) 224 if (string.Is8Bit())
225 append(string); 225 append(string);
226 else 226 else
227 append(string); 227 append(string);
228 return; 228 return;
229 } 229 }
230 230
231 DCHECK(impl_); 231 DCHECK(impl_);
232 if (string.Is8Bit()) 232 if (string.Is8Bit())
233 impl_ = InsertInternal(impl_.Release(), string.Characters8(), 233 impl_ = InsertInternal(std::move(impl_), string.Characters8(),
234 string.length(), position); 234 string.length(), position);
235 else 235 else
236 impl_ = InsertInternal(impl_.Release(), string.Characters16(), 236 impl_ = InsertInternal(std::move(impl_), string.Characters16(),
237 string.length(), position); 237 string.length(), position);
238 } 238 }
239 239
240 UChar32 String::CharacterStartingAt(unsigned i) const { 240 UChar32 String::CharacterStartingAt(unsigned i) const {
241 if (!impl_ || i >= impl_->length()) 241 if (!impl_ || i >= impl_->length())
242 return 0; 242 return 0;
243 return impl_->CharacterStartingAt(i); 243 return impl_->CharacterStartingAt(i);
244 } 244 }
245 245
246 void String::Ensure16Bit() { 246 void String::Ensure16Bit() {
(...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 return out << '"'; 824 return out << '"';
825 } 825 }
826 826
827 #ifndef NDEBUG 827 #ifndef NDEBUG
828 void String::Show() const { 828 void String::Show() const {
829 DataLogF("%s\n", AsciiDebug(Impl()).data()); 829 DataLogF("%s\n", AsciiDebug(Impl()).data());
830 } 830 }
831 #endif 831 #endif
832 832
833 } // namespace WTF 833 } // namespace WTF
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698