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

Side by Side Diff: src/js/json.js

Issue 2006663002: [json] implement JSON.stringify gap pre-processing in C++. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@jsonrefactor
Patch Set: Created 4 years, 7 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
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 (function(global, utils) { 5 (function(global, utils) {
6 6
7 "use strict"; 7 "use strict";
8 8
9 %CheckIsBootstrapping(); 9 %CheckIsBootstrapping();
10 10
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 replacer = property_list; 226 replacer = property_list;
227 } 227 }
228 if (IS_OBJECT(space)) { 228 if (IS_OBJECT(space)) {
229 // Unwrap 'space' if it is wrapped 229 // Unwrap 'space' if it is wrapped
230 if (IS_NUMBER_WRAPPER(space)) { 230 if (IS_NUMBER_WRAPPER(space)) {
231 space = TO_NUMBER(space); 231 space = TO_NUMBER(space);
232 } else if (IS_STRING_WRAPPER(space)) { 232 } else if (IS_STRING_WRAPPER(space)) {
233 space = TO_STRING(space); 233 space = TO_STRING(space);
234 } 234 }
235 } 235 }
236 if (!IS_CALLABLE(replacer) && !property_list) {
237 return %BasicJSONStringify(value, space);
238 }
236 var gap; 239 var gap;
237 if (IS_NUMBER(space)) { 240 if (IS_NUMBER(space)) {
238 space = MaxSimple(0, MinSimple(TO_INTEGER(space), 10)); 241 space = MaxSimple(0, MinSimple(TO_INTEGER(space), 10));
239 gap = %_SubString(" ", 0, space); 242 gap = %_SubString(" ", 0, space);
240 } else if (IS_STRING(space)) { 243 } else if (IS_STRING(space)) {
241 if (space.length > 10) { 244 if (space.length > 10) {
242 gap = %_SubString(space, 0, 10); 245 gap = %_SubString(space, 0, 10);
243 } else { 246 } else {
244 gap = space; 247 gap = space;
245 } 248 }
246 } else { 249 } else {
247 gap = ""; 250 gap = "";
248 } 251 }
249 if (!IS_CALLABLE(replacer) && !property_list) {
250 return %BasicJSONStringify(value, gap);
251 }
252 return JSONSerialize('', {'': value}, replacer, new Stack(), "", gap); 252 return JSONSerialize('', {'': value}, replacer, new Stack(), "", gap);
253 } 253 }
254 254
255 // ------------------------------------------------------------------- 255 // -------------------------------------------------------------------
256 256
257 %AddNamedProperty(GlobalJSON, toStringTagSymbol, "JSON", READ_ONLY | DONT_ENUM); 257 %AddNamedProperty(GlobalJSON, toStringTagSymbol, "JSON", READ_ONLY | DONT_ENUM);
258 258
259 // Set up non-enumerable properties of the JSON object. 259 // Set up non-enumerable properties of the JSON object.
260 utils.InstallFunctions(GlobalJSON, DONT_ENUM, [ 260 utils.InstallFunctions(GlobalJSON, DONT_ENUM, [
261 "parse", JSONParse, 261 "parse", JSONParse,
(...skipping 12 matching lines...) Expand all
274 } 274 }
275 return o.toISOString(); 275 return o.toISOString();
276 } 276 }
277 277
278 // Set up non-enumerable functions of the Date prototype object. 278 // Set up non-enumerable functions of the Date prototype object.
279 utils.InstallFunctions(GlobalDate.prototype, DONT_ENUM, [ 279 utils.InstallFunctions(GlobalDate.prototype, DONT_ENUM, [
280 "toJSON", DateToJSON 280 "toJSON", DateToJSON
281 ]); 281 ]);
282 282
283 }) 283 })
OLDNEW
« no previous file with comments | « src/api.cc ('k') | src/json-stringifier.h » ('j') | src/json-stringifier.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698