Changeset 52075 in webkit for trunk/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
- Timestamp:
- Dec 13, 2009, 4:27:07 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
r48905 r52075 28 28 #include "CallFrame.h" 29 29 #include "GlobalEvalFunction.h" 30 #include "Interpreter.h" 30 31 #include "JSGlobalObject.h" 32 #include "JSString.h" 33 #include "Lexer.h" 31 34 #include "LiteralParser.h" 32 #include "JSString.h" 33 #include "Interpreter.h" 35 #include "Nodes.h" 34 36 #include "Parser.h" 37 #include "StringBuilder.h" 35 38 #include "dtoa.h" 36 #include "Lexer.h"37 #include "Nodes.h"38 39 #include <stdio.h> 39 40 #include <stdlib.h> … … 56 57 return throwError(exec, URIError, "String contained an illegal UTF-16 sequence."); 57 58 58 UString result = "";59 StringBuilder builder; 59 60 const char* p = cstr.c_str(); 60 61 for (size_t k = 0; k < cstr.size(); k++, p++) { 61 62 char c = *p; 62 63 if (c && strchr(doNotEscape, c)) 63 result.append(c);64 builder.append(c); 64 65 else { 65 66 char tmp[4]; 66 s printf(tmp, "%%%02X", static_cast<unsigned char>(c));67 result += tmp;68 } 69 } 70 return jsString(exec, result);67 snprintf(tmp, 4, "%%%02X", static_cast<unsigned char>(c)); 68 builder.append((const char*)tmp); 69 } 70 } 71 return jsString(exec, builder.release()); 71 72 } 72 73 73 74 static JSValue decode(ExecState* exec, const ArgList& args, const char* doNotUnescape, bool strict) 74 75 { 75 UString result = "";76 StringBuilder builder; 76 77 UString str = args.at(0).toString(exec); 77 78 int k = 0; … … 107 108 else if (character >= 0x10000) { 108 109 // Convert to surrogate pair. 109 result.append(static_cast<UChar>(0xD800 | ((character - 0x10000) >> 10)));110 builder.append(static_cast<UChar>(0xD800 | ((character - 0x10000) >> 10))); 110 111 u = static_cast<UChar>(0xDC00 | ((character - 0x10000) & 0x3FF)); 111 112 } else … … 132 133 } 133 134 k++; 134 result.append(c);135 } 136 return jsString(exec, result);135 builder.append(c); 136 } 137 return jsString(exec, builder.release()); 137 138 } 138 139 … … 377 378 "*+-./@_"; 378 379 379 UString result = "";380 StringBuilder builder; 380 381 UString s; 381 382 UString str = args.at(0).toString(exec); … … 394 395 s = UString(tmp); 395 396 } 396 result += s;397 } 398 399 return jsString(exec, result);397 builder.append(s); 398 } 399 400 return jsString(exec, builder.release()); 400 401 } 401 402 402 403 JSValue JSC_HOST_CALL globalFuncUnescape(ExecState* exec, JSObject*, JSValue, const ArgList& args) 403 404 { 404 UString result = "";405 StringBuilder builder; 405 406 UString str = args.at(0).toString(exec); 406 407 int k = 0; … … 421 422 } 422 423 k++; 423 result.append(*c);424 } 425 426 return jsString(exec, result);424 builder.append(*c); 425 } 426 427 return jsString(exec, builder.release()); 427 428 } 428 429
Note:
See TracChangeset
for help on using the changeset viewer.