OLD | NEW |
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 |
11 // ------------------------------------------------------------------- | 11 // ------------------------------------------------------------------- |
12 // Imports | 12 // Imports |
13 | 13 |
14 var GlobalJSON = global.JSON; | 14 var GlobalJSON = global.JSON; |
15 var InternalArray = utils.InternalArray; | 15 var InternalArray = utils.InternalArray; |
16 var MathMax; | 16 var MathMax; |
17 var MathMin; | 17 var MathMin; |
18 var ObjectHasOwnProperty; | 18 var ObjectHasOwnProperty; |
19 var ToNumber; | 19 var ToNumber; |
20 var ToString; | 20 var ToString; |
| 21 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
21 | 22 |
22 utils.Import(function(from) { | 23 utils.Import(function(from) { |
23 MathMax = from.MathMax; | 24 MathMax = from.MathMax; |
24 MathMin = from.MathMin; | 25 MathMin = from.MathMin; |
25 ObjectHasOwnProperty = from.ObjectHasOwnProperty; | 26 ObjectHasOwnProperty = from.ObjectHasOwnProperty; |
26 ToNumber = from.ToNumber; | 27 ToNumber = from.ToNumber; |
27 ToString = from.ToString; | 28 ToString = from.ToString; |
28 }); | 29 }); |
29 | 30 |
30 // ------------------------------------------------------------------- | 31 // ------------------------------------------------------------------- |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 gap = space; | 228 gap = space; |
228 } | 229 } |
229 } else { | 230 } else { |
230 gap = ""; | 231 gap = ""; |
231 } | 232 } |
232 return JSONSerialize('', {'': value}, replacer, new InternalArray(), "", gap); | 233 return JSONSerialize('', {'': value}, replacer, new InternalArray(), "", gap); |
233 } | 234 } |
234 | 235 |
235 // ------------------------------------------------------------------- | 236 // ------------------------------------------------------------------- |
236 | 237 |
237 %AddNamedProperty(GlobalJSON, symbolToStringTag, "JSON", READ_ONLY | DONT_ENUM); | 238 %AddNamedProperty(GlobalJSON, toStringTagSymbol, "JSON", READ_ONLY | DONT_ENUM); |
238 | 239 |
239 // Set up non-enumerable properties of the JSON object. | 240 // Set up non-enumerable properties of the JSON object. |
240 utils.InstallFunctions(GlobalJSON, DONT_ENUM, [ | 241 utils.InstallFunctions(GlobalJSON, DONT_ENUM, [ |
241 "parse", JSONParse, | 242 "parse", JSONParse, |
242 "stringify", JSONStringify | 243 "stringify", JSONStringify |
243 ]); | 244 ]); |
244 | 245 |
245 // ------------------------------------------------------------------- | 246 // ------------------------------------------------------------------- |
246 // JSON Builtins | 247 // JSON Builtins |
247 | 248 |
248 function JsonSerializeAdapter(key, object) { | 249 function JsonSerializeAdapter(key, object) { |
249 var holder = {}; | 250 var holder = {}; |
250 holder[key] = object; | 251 holder[key] = object; |
251 // No need to pass the actual holder since there is no replacer function. | 252 // No need to pass the actual holder since there is no replacer function. |
252 return JSONSerialize(key, holder, UNDEFINED, new InternalArray(), "", ""); | 253 return JSONSerialize(key, holder, UNDEFINED, new InternalArray(), "", ""); |
253 } | 254 } |
254 | 255 |
255 %InstallToContext(["json_serialize_adapter", JsonSerializeAdapter]); | 256 %InstallToContext(["json_serialize_adapter", JsonSerializeAdapter]); |
256 | 257 |
257 }) | 258 }) |
OLD | NEW |