X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/a253471d7f8e4d91bf6ebabab00155c3b387d3d0..93a3786624b2768d89bfa27e46598dc64e2fb70a:/API/OpaqueJSString.cpp diff --git a/API/OpaqueJSString.cpp b/API/OpaqueJSString.cpp index 9a116e6..a7cef8d 100644 --- a/API/OpaqueJSString.cpp +++ b/API/OpaqueJSString.cpp @@ -32,24 +32,32 @@ using namespace JSC; -PassRefPtr OpaqueJSString::create(const UString& ustring) +PassRefPtr OpaqueJSString::create(const String& string) { - if (!ustring.isNull()) - return adoptRef(new OpaqueJSString(ustring.characters(), ustring.length())); + if (!string.isNull()) + return adoptRef(new OpaqueJSString(string)); return 0; } -UString OpaqueJSString::ustring() const +String OpaqueJSString::string() const { - if (this && m_characters) - return UString(m_characters, m_length); - return UString(); + if (!this) + return String(); + + // Return a copy of the wrapped string, because the caller may make it an Identifier. + return m_string.isolatedCopy(); } -Identifier OpaqueJSString::identifier(JSGlobalData* globalData) const +Identifier OpaqueJSString::identifier(VM* vm) const { - if (!this || !m_characters) - return Identifier(globalData, static_cast(0)); + if (!this || m_string.isNull()) + return Identifier(); + + if (m_string.isEmpty()) + return Identifier(Identifier::EmptyIdentifier); + + if (m_string.is8Bit()) + return Identifier(vm, m_string.characters8(), m_string.length()); - return Identifier(globalData, m_characters, m_length); + return Identifier(vm, m_string.characters16(), m_string.length()); }