OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 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 189 matching lines...) Loading... |
200 duplicate_regexp_flag: ["Duplicate RegExp flag ", "%0"], | 200 duplicate_regexp_flag: ["Duplicate RegExp flag ", "%0"], |
201 invalid_regexp: ["Invalid RegExp pattern /", "%0", "/"], | 201 invalid_regexp: ["Invalid RegExp pattern /", "%0", "/"], |
202 illegal_break: ["Illegal break statement"], | 202 illegal_break: ["Illegal break statement"], |
203 illegal_continue: ["Illegal continue statement"], | 203 illegal_continue: ["Illegal continue statement"], |
204 illegal_return: ["Illegal return statement"], | 204 illegal_return: ["Illegal return statement"], |
205 error_loading_debugger: ["Error loading debugger"], | 205 error_loading_debugger: ["Error loading debugger"], |
206 no_input_to_regexp: ["No input to ", "%0"], | 206 no_input_to_regexp: ["No input to ", "%0"], |
207 invalid_json: ["String '", "%0", "' is not valid JSON"], | 207 invalid_json: ["String '", "%0", "' is not valid JSON"], |
208 circular_structure: ["Converting circular structure to JSON"], | 208 circular_structure: ["Converting circular structure to JSON"], |
209 obj_ctor_property_non_object: ["Object.", "%0", " called on non-object"], | 209 obj_ctor_property_non_object: ["Object.", "%0", " called on non-object"], |
| 210 called_on_null_or_undefined: ["%0", " called on null or undefined"], |
210 array_indexof_not_defined: ["Array.getIndexOf: Argument undefined"], | 211 array_indexof_not_defined: ["Array.getIndexOf: Argument undefined"], |
211 object_not_extensible: ["Can't add property ", "%0", ", object is n
ot extensible"], | 212 object_not_extensible: ["Can't add property ", "%0", ", object is n
ot extensible"], |
212 illegal_access: ["Illegal access"], | 213 illegal_access: ["Illegal access"], |
213 invalid_preparser_data: ["Invalid preparser data for function ", "%0
"], | 214 invalid_preparser_data: ["Invalid preparser data for function ", "%0
"], |
214 strict_mode_with: ["Strict mode code may not include a with st
atement"], | 215 strict_mode_with: ["Strict mode code may not include a with st
atement"], |
215 strict_catch_variable: ["Catch variable may not be eval or argument
s in strict mode"], | 216 strict_catch_variable: ["Catch variable may not be eval or argument
s in strict mode"], |
216 too_many_parameters: ["Too many parameters in function definition
"], | 217 too_many_parameters: ["Too many parameters in function definition
"], |
217 strict_param_name: ["Parameter name eval or arguments is not al
lowed in strict mode"], | 218 strict_param_name: ["Parameter name eval or arguments is not al
lowed in strict mode"], |
218 strict_param_dupe: ["Strict mode function may not have duplicat
e parameter names"], | 219 strict_param_dupe: ["Strict mode function may not have duplicat
e parameter names"], |
219 strict_var_name: ["Variable name may not be eval or arguments
in strict mode"], | 220 strict_var_name: ["Variable name may not be eval or arguments
in strict mode"], |
(...skipping 843 matching lines...) Loading... |
1063 var message = %_CallFunction(this, "message", ObjectHasOwnProperty) | 1064 var message = %_CallFunction(this, "message", ObjectHasOwnProperty) |
1064 ? (": " + this.message) | 1065 ? (": " + this.message) |
1065 : ""; | 1066 : ""; |
1066 return this.name + message; | 1067 return this.name + message; |
1067 } finally { | 1068 } finally { |
1068 visited_errors.length = visited_errors.length - 1; | 1069 visited_errors.length = visited_errors.length - 1; |
1069 } | 1070 } |
1070 } | 1071 } |
1071 | 1072 |
1072 function errorToString() { | 1073 function errorToString() { |
| 1074 if (IS_NULL_OR_UNDEFINED(this) && !IS_UNDETECTABLE(this)) { |
| 1075 throw MakeTypeError("called_on_null_or_undefined", |
| 1076 ["Error.prototype.toString"]); |
| 1077 } |
1073 // This helper function is needed because access to properties on | 1078 // This helper function is needed because access to properties on |
1074 // the builtins object do not work inside of a catch clause. | 1079 // the builtins object do not work inside of a catch clause. |
1075 function isCyclicErrorMarker(o) { return o === cyclic_error_marker; } | 1080 function isCyclicErrorMarker(o) { return o === cyclic_error_marker; } |
1076 | 1081 |
1077 try { | 1082 try { |
1078 return %_CallFunction(this, errorToStringDetectCycle); | 1083 return %_CallFunction(this, errorToStringDetectCycle); |
1079 } catch(e) { | 1084 } catch(e) { |
1080 // If this error message was encountered already return the empty | 1085 // If this error message was encountered already return the empty |
1081 // string for it instead of recursively formatting it. | 1086 // string for it instead of recursively formatting it. |
1082 if (isCyclicErrorMarker(e)) return ''; | 1087 if (isCyclicErrorMarker(e)) return ''; |
1083 else throw e; | 1088 else throw e; |
1084 } | 1089 } |
1085 } | 1090 } |
1086 | 1091 |
1087 | 1092 |
1088 InstallFunctions($Error.prototype, DONT_ENUM, ['toString', errorToString]); | 1093 InstallFunctions($Error.prototype, DONT_ENUM, ['toString', errorToString]); |
1089 | 1094 |
1090 // Boilerplate for exceptions for stack overflows. Used from | 1095 // Boilerplate for exceptions for stack overflows. Used from |
1091 // Isolate::StackOverflow(). | 1096 // Isolate::StackOverflow(). |
1092 const kStackOverflowBoilerplate = MakeRangeError('stack_overflow', []); | 1097 const kStackOverflowBoilerplate = MakeRangeError('stack_overflow', []); |
OLD | NEW |