| 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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 83   for (var i = 0; i < args.length; i++) { | 83   for (var i = 0; i < args.length; i++) { | 
| 84     var str; | 84     var str; | 
| 85     try { str = ToDetailString(args[i]); } | 85     try { str = ToDetailString(args[i]); } | 
| 86     catch (e) { str = "#<error>"; } | 86     catch (e) { str = "#<error>"; } | 
| 87     result = ArrayJoin.call(StringSplit.call(result, "%" + i), str); | 87     result = ArrayJoin.call(StringSplit.call(result, "%" + i), str); | 
| 88   } | 88   } | 
| 89   return result; | 89   return result; | 
| 90 } | 90 } | 
| 91 | 91 | 
| 92 | 92 | 
|  | 93 // To check if something is a native error we need to check the | 
|  | 94 // concrete native error types. It is not enough to check "obj | 
|  | 95 // instanceof $Error" because user code can replace | 
|  | 96 // NativeError.prototype.__proto__. User code cannot replace | 
|  | 97 // NativeError.prototype though and therefore this is a safe test. | 
|  | 98 function IsNativeErrorObject(obj) { | 
|  | 99   return (obj instanceof $Error) || | 
|  | 100       (obj instanceof $EvalError) || | 
|  | 101       (obj instanceof $RangeError) || | 
|  | 102       (obj instanceof $ReferenceError) || | 
|  | 103       (obj instanceof $SyntaxError) || | 
|  | 104       (obj instanceof $TypeError) || | 
|  | 105       (obj instanceof $URIError); | 
|  | 106 } | 
|  | 107 | 
|  | 108 | 
| 93 // When formatting internally created error messages, do not | 109 // When formatting internally created error messages, do not | 
| 94 // invoke overwritten error toString methods but explicitly use | 110 // invoke overwritten error toString methods but explicitly use | 
| 95 // the error to string method. This is to avoid leaking error | 111 // the error to string method. This is to avoid leaking error | 
| 96 // objects between script tags in a browser setting. | 112 // objects between script tags in a browser setting. | 
| 97 function ToStringCheckErrorObject(obj) { | 113 function ToStringCheckErrorObject(obj) { | 
| 98   if (obj instanceof $Error) { | 114   if (IsNativeErrorObject(obj)) { | 
| 99     return %_CallFunction(obj, errorToString); | 115     return %_CallFunction(obj, errorToString); | 
| 100   } else { | 116   } else { | 
| 101     return ToString(obj); | 117     return ToString(obj); | 
| 102   } | 118   } | 
| 103 } | 119 } | 
| 104 | 120 | 
| 105 | 121 | 
| 106 function ToDetailString(obj) { | 122 function ToDetailString(obj) { | 
| 107   if (obj != null && IS_OBJECT(obj) && obj.toString === $Object.prototype.toStri
      ng) { | 123   if (obj != null && IS_OBJECT(obj) && obj.toString === $Object.prototype.toStri
      ng) { | 
| 108     var constructor = obj.constructor; | 124     var constructor = obj.constructor; | 
| (...skipping 945 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1054     else throw e; | 1070     else throw e; | 
| 1055   } | 1071   } | 
| 1056 } | 1072 } | 
| 1057 | 1073 | 
| 1058 %FunctionSetName(errorToString, 'toString'); | 1074 %FunctionSetName(errorToString, 'toString'); | 
| 1059 %SetProperty($Error.prototype, 'toString', errorToString, DONT_ENUM); | 1075 %SetProperty($Error.prototype, 'toString', errorToString, DONT_ENUM); | 
| 1060 | 1076 | 
| 1061 // Boilerplate for exceptions for stack overflows. Used from | 1077 // Boilerplate for exceptions for stack overflows. Used from | 
| 1062 // Top::StackOverflow(). | 1078 // Top::StackOverflow(). | 
| 1063 const kStackOverflowBoilerplate = MakeRangeError('stack_overflow', []); | 1079 const kStackOverflowBoilerplate = MakeRangeError('stack_overflow', []); | 
| OLD | NEW | 
|---|