OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller ( mueller@kde.org ) | 4 * (C) 2001 Dirk Mueller ( mueller@kde.org ) |
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2013 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2013 Apple Inc. All r
ights reserved. |
6 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) | 6 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) |
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 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 if (isAtomic()) | 279 if (isAtomic()) |
280 AtomicStringTable::instance().remove(this); | 280 AtomicStringTable::instance().remove(this); |
281 } | 281 } |
282 | 282 |
283 void StringImpl::destroyIfNotStatic() | 283 void StringImpl::destroyIfNotStatic() |
284 { | 284 { |
285 if (!isStatic()) | 285 if (!isStatic()) |
286 delete this; | 286 delete this; |
287 } | 287 } |
288 | 288 |
| 289 bool StringImpl::isSafeToSendToAnotherThread() const |
| 290 { |
| 291 if (isStatic()) |
| 292 return true; |
| 293 // AtomicStrings are not safe to send between threads as ~StringImpl() |
| 294 // will try to remove them from the wrong AtomicStringTable. |
| 295 if (isAtomic()) |
| 296 return false; |
| 297 if (hasOneRef()) |
| 298 return true; |
| 299 return false; |
| 300 } |
| 301 |
289 PassRefPtr<StringImpl> StringImpl::createUninitialized(unsigned length, LChar*&
data) | 302 PassRefPtr<StringImpl> StringImpl::createUninitialized(unsigned length, LChar*&
data) |
290 { | 303 { |
291 if (!length) { | 304 if (!length) { |
292 data = 0; | 305 data = 0; |
293 return empty(); | 306 return empty(); |
294 } | 307 } |
295 | 308 |
296 // Allocate a single buffer large enough to contain the StringImpl | 309 // Allocate a single buffer large enough to contain the StringImpl |
297 // struct as well as the data which it contains. This removes one | 310 // struct as well as the data which it contains. This removes one |
298 // heap allocation from this call. | 311 // heap allocation from this call. |
(...skipping 1705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2004 } else if (localeIdMatchesLang(localeIdentifier, "lt")) { | 2017 } else if (localeIdMatchesLang(localeIdentifier, "lt")) { |
2005 // TODO(rob.buis) implement upper-casing rules for lt | 2018 // TODO(rob.buis) implement upper-casing rules for lt |
2006 // like in StringImpl::upper(locale). | 2019 // like in StringImpl::upper(locale). |
2007 } | 2020 } |
2008 } | 2021 } |
2009 | 2022 |
2010 return toUpper(c); | 2023 return toUpper(c); |
2011 } | 2024 } |
2012 | 2025 |
2013 } // namespace WTF | 2026 } // namespace WTF |
OLD | NEW |