Changeset 65286 in webkit for trunk/JavaScriptCore
- Timestamp:
- Aug 12, 2010, 6:05:10 PM (15 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r65268 r65286 1 2010-08-12 Gavin Barraclough <[email protected]> 2 3 Reviewed by Sam Weinig 4 5 Change UString constructors to match those in WTF::String. 6 This changes behaviour of UString((char*)0) to create null 7 strings, akin to UString() rather than UString::empty(). 8 (This matches String). Remove unused constructors from 9 UString, and add null-terminated UTF-16 constructor, to 10 match String. Move String's constructor into the .cpp to 11 match UString. 12 13 * JavaScriptCore.exp: 14 * debugger/DebuggerCallFrame.cpp: 15 (JSC::DebuggerCallFrame::calculatedFunctionName): 16 * runtime/RegExpKey.h: 17 (JSC::RegExpKey::RegExpKey): 18 * runtime/SmallStrings.cpp: 19 (JSC::SmallStrings::createSingleCharacterString): 20 * runtime/UString.cpp: 21 (JSC::UString::UString): 22 * runtime/UString.h: 23 (JSC::UString::UString): 24 (JSC::UString::swap): 25 (JSC::UString::adopt): 26 (JSC::UString::operator[]): 27 * wtf/text/WTFString.h: 28 (WTF::String::String): 29 (WTF::String::adopt): 30 (WTF::String::operator[]): 31 1 32 2010-08-12 David Levin <[email protected]> 2 33 -
trunk/JavaScriptCore/JavaScriptCore.exp
r65177 r65286 256 256 __ZN3JSC7UString6numberEj 257 257 __ZN3JSC7UString6numberEl 258 __ZN3JSC7UStringC1EPKc259 __ZN3JSC7UStringC1EPKtj260 258 __ZN3JSC8Debugger23recompileAllJSFunctionsEPNS_12JSGlobalDataE 261 259 __ZN3JSC8Debugger6attachEPNS_14JSGlobalObjectE … … 443 441 __ZN3WTF6String8fromUTF8EPKcm 444 442 __ZN3WTF6String8truncateEj 443 __ZN3WTF6StringC1EPKc 444 __ZN3WTF6StringC1EPKcj 445 445 __ZN3WTF6StringC1EPKt 446 __ZN3WTF6StringC1EPKtj 446 447 __ZN3WTF6strtodEPKcPPc 447 448 __ZN3WTF7CString11mutableDataEv -
trunk/JavaScriptCore/debugger/DebuggerCallFrame.cpp
r60392 r65286 58 58 JSObject* function = m_callFrame->callee(); 59 59 if (!function || !function->inherits(&JSFunction::info)) 60 return 0;60 return UString(); 61 61 62 62 return asFunction(function)->calculatedDisplayName(m_callFrame); -
trunk/JavaScriptCore/runtime/RegExpKey.h
r65104 r65286 59 59 } 60 60 61 RegExpKey(int flags, const RefPtr<StringImpl>& pattern) 62 : flagsValue(flags) 63 , pattern(pattern) 64 { 65 } 66 61 67 RegExpKey(const UString& flags, const UString& pattern) 62 68 : pattern(pattern.impl()) -
trunk/JavaScriptCore/runtime/SmallStrings.cpp
r65104 r65286 130 130 m_storage = adoptPtr(new SmallStringsStorage); 131 131 ASSERT(!m_singleCharacterStrings[character]); 132 m_singleCharacterStrings[character] = new (globalData) JSString(globalData, m_storage->rep(character), JSString::HasOtherOwner);132 m_singleCharacterStrings[character] = new (globalData) JSString(globalData, PassRefPtr<StringImpl>(m_storage->rep(character)), JSString::HasOtherOwner); 133 133 } 134 134 -
trunk/JavaScriptCore/runtime/UString.cpp
r65266 r65286 57 57 COMPILE_ASSERT(sizeof(UString) == sizeof(void*), UString_should_stay_small); 58 58 59 UString::UString(const char* c) 60 : m_impl(StringImpl::create(c)) 61 { 62 } 63 64 UString::UString(const char* c, unsigned length) 65 : m_impl(StringImpl::create(c, length)) 66 { 67 } 68 69 UString::UString(const UChar* c, unsigned length) 70 : m_impl(StringImpl::create(c, length)) 71 { 72 } 59 // UString::UString(const UChar* characters, unsigned length) 60 // : m_impl(characters ? StringImpl::create(characters, length) : 0) 61 // { 62 // } 63 UString::UString(const UChar* characters) 64 { 65 if (!characters) 66 return; 67 68 int length = 0; 69 while (characters[length] != UChar(0)) 70 ++length; 71 72 m_impl = StringImpl::create(characters, length); 73 } 74 // UString::UString(const char* characters) 75 // : m_impl(characters ? StringImpl::create(characters) : 0) 76 // { 77 // } 78 // UString::UString(const char* characters, unsigned length) 79 // : m_impl(characters ? StringImpl::create(characters, length) : 0) 80 // { 81 // } 73 82 74 83 UString UString::number(int i) … … 209 218 210 219 return asciiBuffer; 211 }212 213 UChar UString::operator[](unsigned pos) const214 {215 if (pos >= length())216 return '\0';217 return characters()[pos];218 220 } 219 221 -
trunk/JavaScriptCore/runtime/UString.h
r65268 r65286 44 44 class UString { 45 45 public: 46 UString() {} 47 UString(const char*); // Constructor for null-terminated string. 48 UString(const char*, unsigned length); 49 UString(const UChar*, unsigned length); 50 UString(const Vector<UChar>& buffer); 51 52 UString(const UString& s) 53 : m_impl(s.m_impl) 54 { 55 } 56 57 // Special constructor for cases where we overwrite an object in place. 58 UString(PlacementNewAdoptType) 59 : m_impl(PlacementNewAdopt) 60 { 61 } 46 // Construct a null string, distinguishable from an empty string. 47 UString() { } 48 49 // Construct a string with UTF-16 data. 50 UString(const UChar* characters, unsigned length) 51 : m_impl(characters ? StringImpl::create(characters, length) : 0) 52 { 53 } 54 55 // Construct a string with UTF-16 data, from a null-terminated source. 56 UString(const UChar*); 57 58 // Construct a string with latin1 data. 59 UString(const char* characters) 60 : m_impl(characters ? StringImpl::create(characters) : 0) 61 { 62 } 63 64 // Construct a string with latin1 data, from a null-terminated source. 65 UString(const char* characters, unsigned length) 66 : m_impl(characters ? StringImpl::create(characters, length) : 0) 67 { 68 } 69 70 // Construct a string referencing an existing StringImpl. 71 UString(StringImpl* impl) : m_impl(impl) { } 72 UString(PassRefPtr<StringImpl> impl) : m_impl(impl) { } 73 UString(RefPtr<StringImpl> impl) : m_impl(impl) { } 74 75 void swap(UString& o) { m_impl.swap(o.m_impl); } 62 76 63 77 template<size_t inlineCapacity> 64 static PassRefPtr<StringImpl> adopt(Vector<UChar, inlineCapacity>& vector) 65 { 66 return StringImpl::adopt(vector); 67 } 78 static UString adopt(Vector<UChar, inlineCapacity>& vector) { return StringImpl::adopt(vector); } 68 79 69 80 static UString number(int); … … 101 112 } 102 113 103 UChar operator[](unsigned pos) const; 114 UChar operator[](unsigned index) const 115 { 116 if (!m_impl || index >= m_impl->length()) 117 return 0; 118 return m_impl->characters()[index]; 119 } 104 120 105 121 double toDouble(bool tolerateTrailingJunk, bool tolerateEmptyString) const; … … 125 141 126 142 StringImpl* impl() const { return m_impl.get(); } 127 128 UString(PassRefPtr<StringImpl> r)129 : m_impl(r)130 {131 }132 143 133 144 size_t cost() const -
trunk/JavaScriptCore/wtf/text/WTFString.cpp
r65021 r65286 37 37 using namespace Unicode; 38 38 39 // Construct a string with UTF-16 data. 40 String::String(const UChar* characters, unsigned length) 41 : m_impl(characters ? StringImpl::create(characters, length) : 0) 42 { 43 } 44 45 // Construct a string with UTF-16 data, from a null-terminated source. 39 46 String::String(const UChar* str) 40 47 { … … 47 54 48 55 m_impl = StringImpl::create(str, len); 56 } 57 58 // Construct a string with latin1 data. 59 String::String(const char* characters, unsigned length) 60 : m_impl(characters ? StringImpl::create(characters, length) : 0) 61 { 62 } 63 64 // Construct a string with latin1 data, from a null-terminated source. 65 String::String(const char* characters) 66 : m_impl(characters ? StringImpl::create(characters) : 0) 67 { 49 68 } 50 69 -
trunk/JavaScriptCore/wtf/text/WTFString.h
r65264 r65286 78 78 class String { 79 79 public: 80 String() { } // gives null string, distinguishable from an empty string 81 String(const UChar* str, unsigned len) 82 { 83 if (!str) 84 return; 85 m_impl = StringImpl::create(str, len); 86 } 87 String(const char* str) 88 { 89 if (!str) 90 return; 91 m_impl = StringImpl::create(str); 92 } 93 String(const char* str, unsigned length) 94 { 95 if (!str) 96 return; 97 m_impl = StringImpl::create(str, length); 98 } 99 String(const UChar*); // Specifically for null terminated UTF-16 100 String(StringImpl* i) : m_impl(i) { } 101 String(PassRefPtr<StringImpl> i) : m_impl(i) { } 102 String(RefPtr<StringImpl> i) : m_impl(i) { } 80 // Construct a null string, distinguishable from an empty string. 81 String() { } 82 83 // Construct a string with UTF-16 data. 84 String(const UChar* characters, unsigned length); 85 86 // Construct a string with UTF-16 data, from a null-terminated source. 87 String(const UChar*); 88 89 // Construct a string with latin1 data. 90 String(const char* characters, unsigned length); 91 92 // Construct a string with latin1 data, from a null-terminated source. 93 String(const char* characters); 94 95 // Construct a string referencing an existing StringImpl. 96 String(StringImpl* impl) : m_impl(impl) { } 97 String(PassRefPtr<StringImpl> impl) : m_impl(impl) { } 98 String(RefPtr<StringImpl> impl) : m_impl(impl) { } 103 99 104 100 void swap(String& o) { m_impl.swap(o.m_impl); } … … 109 105 110 106 static String adopt(StringBuffer& buffer) { return StringImpl::adopt(buffer); } 111 static String adopt(Vector<UChar>& vector) { return StringImpl::adopt(vector); } 107 template<size_t inlineCapacity> 108 static String adopt(Vector<UChar, inlineCapacity>& vector) { return StringImpl::adopt(vector); } 109 112 110 113 111 ALWAYS_INLINE unsigned length() const … … 127 125 const UChar* charactersWithNullTermination(); 128 126 129 UChar operator[](unsigned i ) const // if i >= length(), returns 0127 UChar operator[](unsigned index) const 130 128 { 131 if (!m_impl || i >= m_impl->length())129 if (!m_impl || index >= m_impl->length()) 132 130 return 0; 133 return m_impl->characters()[i ];131 return m_impl->characters()[index]; 134 132 } 135 133 UChar32 characterStartingAt(unsigned) const; // Ditto.
Note:
See TracChangeset
for help on using the changeset viewer.