Changeset 36006 in webkit for trunk/JavaScriptCore/kjs/JSString.cpp
- Timestamp:
- Aug 30, 2008, 11:58:07 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/JSString.cpp
r35830 r36006 116 116 } 117 117 118 JSString* jsString(ExecState* exec, const char* s)119 {120 return new (exec) JSString(s ? s : "");121 }122 123 118 JSString* jsString(ExecState* exec, const UString& s) 124 119 { 125 return s.isNull() ? new (exec) JSString("") : new (exec) JSString(s); 120 int size = s.size(); 121 if (!size) 122 return exec->globalData().smallStrings.emptyString(exec); 123 if (size == 1) { 124 UChar c = s.data()[0]; 125 if (c <= 0xFF) 126 return exec->globalData().smallStrings.singleCharacterString(exec, c); 127 } 128 return new (exec) JSString(s); 129 } 130 131 JSString* jsSubstring(ExecState* exec, const UString& s, unsigned offset, unsigned length) 132 { 133 ASSERT(offset <= static_cast<unsigned>(s.size())); 134 ASSERT(length <= static_cast<unsigned>(s.size())); 135 ASSERT(offset + length <= static_cast<unsigned>(s.size())); 136 if (!length) 137 return exec->globalData().smallStrings.emptyString(exec); 138 if (length == 1) { 139 UChar c = s.data()[offset]; 140 if (c <= 0xFF) 141 return exec->globalData().smallStrings.singleCharacterString(exec, c); 142 } 143 return new (exec) JSString(UString::Rep::create(s.rep(), offset, length)); 126 144 } 127 145 128 146 JSString* jsOwnedString(ExecState* exec, const UString& s) 129 147 { 130 return s.isNull() ? new (exec) JSString("", JSString::HasOtherOwner) : new (exec) JSString(s, JSString::HasOtherOwner); 148 int size = s.size(); 149 if (!size) 150 return exec->globalData().smallStrings.emptyString(exec); 151 if (size == 1) { 152 UChar c = s.data()[0]; 153 if (c <= 0xFF) 154 return exec->globalData().smallStrings.singleCharacterString(exec, c); 155 } 156 return new (exec) JSString(s, JSString::HasOtherOwner); 131 157 } 132 158
Note:
See TracChangeset
for help on using the changeset viewer.