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/json.js

Issue 1384443002: [es6] Fix missing bits for full @@toPrimitive support. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Remove useless cctest. Created 5 years, 2 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
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;
20 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); 19 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol");
21 20
22 utils.Import(function(from) { 21 utils.Import(function(from) {
23 MathMax = from.MathMax; 22 MathMax = from.MathMax;
24 MathMin = from.MathMin; 23 MathMin = from.MathMin;
25 ObjectHasOwnProperty = from.ObjectHasOwnProperty; 24 ObjectHasOwnProperty = from.ObjectHasOwnProperty;
26 ToNumber = from.ToNumber;
27 }); 25 });
28 26
29 // ------------------------------------------------------------------- 27 // -------------------------------------------------------------------
30 28
31 function Revive(holder, name, reviver) { 29 function Revive(holder, name, reviver) {
32 var val = holder[name]; 30 var val = holder[name];
33 if (IS_OBJECT(val)) { 31 if (IS_OBJECT(val)) {
34 if (IS_ARRAY(val)) { 32 if (IS_ARRAY(val)) {
35 var length = val.length; 33 var length = val.length;
36 for (var i = 0; i < length; i++) { 34 for (var i = 0; i < length; i++) {
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 return JSON_NUMBER_TO_STRING(value); 155 return JSON_NUMBER_TO_STRING(value);
158 } else if (IS_BOOLEAN(value)) { 156 } else if (IS_BOOLEAN(value)) {
159 return value ? "true" : "false"; 157 return value ? "true" : "false";
160 } else if (IS_NULL(value)) { 158 } else if (IS_NULL(value)) {
161 return "null"; 159 return "null";
162 } else if (IS_SPEC_OBJECT(value) && !IS_CALLABLE(value)) { 160 } else if (IS_SPEC_OBJECT(value) && !IS_CALLABLE(value)) {
163 // Non-callable object. If it's a primitive wrapper, it must be unwrapped. 161 // Non-callable object. If it's a primitive wrapper, it must be unwrapped.
164 if (IS_ARRAY(value)) { 162 if (IS_ARRAY(value)) {
165 return SerializeArray(value, replacer, stack, indent, gap); 163 return SerializeArray(value, replacer, stack, indent, gap);
166 } else if (IS_NUMBER_WRAPPER(value)) { 164 } else if (IS_NUMBER_WRAPPER(value)) {
167 value = ToNumber(value); 165 value = TO_NUMBER(value);
168 return JSON_NUMBER_TO_STRING(value); 166 return JSON_NUMBER_TO_STRING(value);
169 } else if (IS_STRING_WRAPPER(value)) { 167 } else if (IS_STRING_WRAPPER(value)) {
170 return %QuoteJSONString(TO_STRING(value)); 168 return %QuoteJSONString(TO_STRING(value));
171 } else if (IS_BOOLEAN_WRAPPER(value)) { 169 } else if (IS_BOOLEAN_WRAPPER(value)) {
172 return %_ValueOf(value) ? "true" : "false"; 170 return %_ValueOf(value) ? "true" : "false";
173 } else { 171 } else {
174 return SerializeObject(value, replacer, stack, indent, gap); 172 return SerializeObject(value, replacer, stack, indent, gap);
175 } 173 }
176 } 174 }
177 // Undefined or a callable object. 175 // Undefined or a callable object.
(...skipping 25 matching lines...) Expand all
203 if (!seen_properties[item]) { 201 if (!seen_properties[item]) {
204 property_list.push(item); 202 property_list.push(item);
205 seen_properties[item] = true; 203 seen_properties[item] = true;
206 } 204 }
207 } 205 }
208 replacer = property_list; 206 replacer = property_list;
209 } 207 }
210 if (IS_OBJECT(space)) { 208 if (IS_OBJECT(space)) {
211 // Unwrap 'space' if it is wrapped 209 // Unwrap 'space' if it is wrapped
212 if (IS_NUMBER_WRAPPER(space)) { 210 if (IS_NUMBER_WRAPPER(space)) {
213 space = ToNumber(space); 211 space = TO_NUMBER(space);
214 } else if (IS_STRING_WRAPPER(space)) { 212 } else if (IS_STRING_WRAPPER(space)) {
215 space = TO_STRING(space); 213 space = TO_STRING(space);
216 } 214 }
217 } 215 }
218 var gap; 216 var gap;
219 if (IS_NUMBER(space)) { 217 if (IS_NUMBER(space)) {
220 space = MathMax(0, MathMin(TO_INTEGER(space), 10)); 218 space = MathMax(0, MathMin(TO_INTEGER(space), 10));
221 gap = %_SubString(" ", 0, space); 219 gap = %_SubString(" ", 0, space);
222 } else if (IS_STRING(space)) { 220 } else if (IS_STRING(space)) {
223 if (space.length > 10) { 221 if (space.length > 10) {
(...skipping 23 matching lines...) Expand all
247 function JsonSerializeAdapter(key, object) { 245 function JsonSerializeAdapter(key, object) {
248 var holder = {}; 246 var holder = {};
249 holder[key] = object; 247 holder[key] = object;
250 // No need to pass the actual holder since there is no replacer function. 248 // No need to pass the actual holder since there is no replacer function.
251 return JSONSerialize(key, holder, UNDEFINED, new InternalArray(), "", ""); 249 return JSONSerialize(key, holder, UNDEFINED, new InternalArray(), "", "");
252 } 250 }
253 251
254 %InstallToContext(["json_serialize_adapter", JsonSerializeAdapter]); 252 %InstallToContext(["json_serialize_adapter", JsonSerializeAdapter]);
255 253
256 }) 254 })
OLDNEW
« no previous file with comments | « src/i18n.js ('k') | src/macros.py » ('j') | test/cctest/compiler/test-run-jscalls.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698