OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 // ------------------------------------------------------------------- | 5 // ------------------------------------------------------------------- |
6 | 6 |
7 var kMessages = { | 7 var kMessages = { |
8 // Error | 8 // Error |
9 cyclic_proto: ["Cyclic __proto__ value"], | 9 cyclic_proto: ["Cyclic __proto__ value"], |
10 code_gen_from_strings: ["%0"], | 10 code_gen_from_strings: ["%0"], |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 var arg_num = 0; | 170 var arg_num = 0; |
171 for (var i = 0; i < format.length; i++) { | 171 for (var i = 0; i < format.length; i++) { |
172 var str = format[i]; | 172 var str = format[i]; |
173 if (str.length == 2 && %_StringCharCodeAt(str, 0) == 0x25) { | 173 if (str.length == 2 && %_StringCharCodeAt(str, 0) == 0x25) { |
174 // Two-char string starts with "%". | 174 // Two-char string starts with "%". |
175 var arg_num = (%_StringCharCodeAt(str, 1) - 0x30) >>> 0; | 175 var arg_num = (%_StringCharCodeAt(str, 1) - 0x30) >>> 0; |
176 if (arg_num < 4) { | 176 if (arg_num < 4) { |
177 // str is one of %0, %1, %2 or %3. | 177 // str is one of %0, %1, %2 or %3. |
178 try { | 178 try { |
179 str = NoSideEffectToString(args[arg_num]); | 179 str = NoSideEffectToString(args[arg_num]); |
180 if (str.length > 256) { | |
181 str = %_SubString(str, 0, 239) + "...<omitted>..." + | |
182 %_SubString(str, str.length - 2, str.length); | |
183 } | |
184 } catch (e) { | 180 } catch (e) { |
185 if (%IsJSModule(args[arg_num])) | 181 if (%IsJSModule(args[arg_num])) |
186 str = "module"; | 182 str = "module"; |
187 else if (IS_SPEC_OBJECT(args[arg_num])) | 183 else if (IS_SPEC_OBJECT(args[arg_num])) |
188 str = "object"; | 184 str = "object"; |
189 else | 185 else |
190 str = "#<error>"; | 186 str = "#<error>"; |
191 } | 187 } |
192 } | 188 } |
193 } | 189 } |
194 result += str; | 190 result += str; |
195 } | 191 } |
196 return result; | 192 return result; |
197 } | 193 } |
198 | 194 |
199 | 195 |
200 function NoSideEffectToString(obj) { | 196 function NoSideEffectToString(obj) { |
201 if (IS_STRING(obj)) return obj; | 197 if (IS_STRING(obj)) return obj; |
202 if (IS_NUMBER(obj)) return %_NumberToString(obj); | 198 if (IS_NUMBER(obj)) return %_NumberToString(obj); |
203 if (IS_BOOLEAN(obj)) return x ? 'true' : 'false'; | 199 if (IS_BOOLEAN(obj)) return obj ? 'true' : 'false'; |
204 if (IS_UNDEFINED(obj)) return 'undefined'; | 200 if (IS_UNDEFINED(obj)) return 'undefined'; |
205 if (IS_NULL(obj)) return 'null'; | 201 if (IS_NULL(obj)) return 'null'; |
206 if (IS_FUNCTION(obj)) return %_CallFunction(obj, FunctionToString); | 202 if (IS_FUNCTION(obj)) { |
| 203 var str = %_CallFunction(obj, FunctionToString); |
| 204 if (str.length > 128) { |
| 205 str = %_SubString(str, 0, 111) + "...<omitted>..." + |
| 206 %_SubString(str, str.length - 2, str.length); |
| 207 } |
| 208 return str; |
| 209 } |
207 if (IS_OBJECT(obj) && %GetDataProperty(obj, "toString") === ObjectToString) { | 210 if (IS_OBJECT(obj) && %GetDataProperty(obj, "toString") === ObjectToString) { |
208 var constructor = %GetDataProperty(obj, "constructor"); | 211 var constructor = %GetDataProperty(obj, "constructor"); |
209 if (typeof constructor == "function") { | 212 if (typeof constructor == "function") { |
210 var constructorName = constructor.name; | 213 var constructorName = constructor.name; |
211 if (IS_STRING(constructorName) && constructorName !== "") { | 214 if (IS_STRING(constructorName) && constructorName !== "") { |
212 return "#<" + constructorName + ">"; | 215 return "#<" + constructorName + ">"; |
213 } | 216 } |
214 } | 217 } |
215 } | 218 } |
216 if (CanBeSafelyTreatedAsAnErrorObject(obj)) { | 219 if (CanBeSafelyTreatedAsAnErrorObject(obj)) { |
(...skipping 1113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1330 return result; | 1333 return result; |
1331 }; | 1334 }; |
1332 | 1335 |
1333 %DefineOrRedefineAccessorProperty( | 1336 %DefineOrRedefineAccessorProperty( |
1334 boilerplate, 'stack', getter, setter, DONT_ENUM); | 1337 boilerplate, 'stack', getter, setter, DONT_ENUM); |
1335 | 1338 |
1336 return boilerplate; | 1339 return boilerplate; |
1337 } | 1340 } |
1338 | 1341 |
1339 var kStackOverflowBoilerplate = SetUpStackOverflowBoilerplate(); | 1342 var kStackOverflowBoilerplate = SetUpStackOverflowBoilerplate(); |
OLD | NEW |