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