Changeset 162205 in webkit for trunk/Source/JavaScriptCore/API/OpaqueJSString.cpp
- Timestamp:
- Jan 17, 2014, 9:44:49 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/API/OpaqueJSString.cpp
r162192 r162205 35 35 PassRefPtr<OpaqueJSString> OpaqueJSString::create(const String& string) 36 36 { 37 if (!string.isNull()) 38 return adoptRef(new OpaqueJSString(string)); 39 return 0; 37 if (string.isNull()) 38 return nullptr; 39 40 return adoptRef(new OpaqueJSString(string)); 41 } 42 43 OpaqueJSString::~OpaqueJSString() 44 { 45 // m_characters is put in a local here to avoid an extra atomic load. 46 const UChar* characters = m_characters; 47 if (!characters) 48 return; 49 50 if (!m_string.is8Bit() && m_string.characters() == characters) 51 return; 52 53 fastFree(const_cast<void*>(static_cast<const void*>(characters))); 40 54 } 41 55 … … 62 76 return Identifier(vm, m_string.characters16(), m_string.length()); 63 77 } 78 79 const UChar* OpaqueJSString::characters() 80 { 81 if (!this) 82 return nullptr; 83 84 // m_characters is put in a local here to avoid an extra atomic load. 85 const UChar* characters = m_characters; 86 if (characters) 87 return characters; 88 89 if (m_string.isNull()) 90 return nullptr; 91 92 unsigned length = m_string.length(); 93 UChar* newCharacters = static_cast<UChar*>(fastMalloc(length * sizeof(UChar))); 94 95 if (m_string.is8Bit()) { 96 for (size_t i = 0; i < length; ++i) 97 newCharacters[i] = m_string.characters8()[i]; 98 } else 99 memcpy(newCharacters, m_string.characters16(), length * sizeof(UChar)); 100 101 if (!m_characters.compare_exchange_strong(characters, newCharacters)) { 102 fastFree(newCharacters); 103 return characters; 104 } 105 106 return newCharacters; 107 } 108 109 bool OpaqueJSString::equal(const OpaqueJSString* a, const OpaqueJSString* b) 110 { 111 if (a == b) 112 return true; 113 114 if (!a || !b) 115 return false; 116 117 return a->m_string == b->m_string; 118 }
Note:
See TracChangeset
for help on using the changeset viewer.