Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Side by Side Diff: src/string.js

Issue 12316158: Insert conversion to string in string.replace. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | test/mjsunit/string-replace.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 // ...... function replace 236 // ...... function replace
237 // ...... string replace (with $-expansion) 237 // ...... string replace (with $-expansion)
238 238
239 if (IS_REGEXP(search)) { 239 if (IS_REGEXP(search)) {
240 // Emulate RegExp.prototype.exec's side effect in step 5, even if 240 // Emulate RegExp.prototype.exec's side effect in step 5, even if
241 // value is discarded. 241 // value is discarded.
242 ToInteger(search.lastIndex); 242 ToInteger(search.lastIndex);
243 %_Log('regexp', 'regexp-replace,%0r,%1S', [search, subject]); 243 %_Log('regexp', 'regexp-replace,%0r,%1S', [search, subject]);
244 244
245 if (!IS_SPEC_FUNCTION(replace)) { 245 if (!IS_SPEC_FUNCTION(replace)) {
246 replace = TO_STRING_INLINE(replace);
247
246 if (!search.global) { 248 if (!search.global) {
247 // Non-global regexp search, string replace. 249 // Non-global regexp search, string replace.
248 var match = DoRegExpExec(search, subject, 0); 250 var match = DoRegExpExec(search, subject, 0);
249 if (match == null) { 251 if (match == null) {
250 search.lastIndex = 0 252 search.lastIndex = 0
251 return subject; 253 return subject;
252 } 254 }
253 replace = TO_STRING_INLINE(replace);
254 if (replace.length == 0) { 255 if (replace.length == 0) {
255 return %_SubString(subject, 0, match[CAPTURE0]) + 256 return %_SubString(subject, 0, match[CAPTURE0]) +
256 %_SubString(subject, match[CAPTURE1], subject.length) 257 %_SubString(subject, match[CAPTURE1], subject.length)
257 } 258 }
258 return ExpandReplacement(replace, subject, lastMatchInfo, 259 return ExpandReplacement(replace, subject, lastMatchInfo,
259 %_SubString(subject, 0, match[CAPTURE0])) + 260 %_SubString(subject, 0, match[CAPTURE0])) +
260 %_SubString(subject, match[CAPTURE1], subject.length); 261 %_SubString(subject, match[CAPTURE1], subject.length);
261 } 262 }
262 263
263 // Global regexp search, string replace. 264 // Global regexp search, string replace.
(...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after
1037 "fixed", StringFixed, 1038 "fixed", StringFixed,
1038 "italics", StringItalics, 1039 "italics", StringItalics,
1039 "small", StringSmall, 1040 "small", StringSmall,
1040 "strike", StringStrike, 1041 "strike", StringStrike,
1041 "sub", StringSub, 1042 "sub", StringSub,
1042 "sup", StringSup 1043 "sup", StringSup
1043 )); 1044 ));
1044 } 1045 }
1045 1046
1046 SetUpString(); 1047 SetUpString();
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/string-replace.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698