| 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 $errorToString; | 7 var $errorToString; |
| 8 var $internalErrorSymbol; | 8 var $internalErrorSymbol; |
| 9 var $stackTraceSymbol; | 9 var $stackTraceSymbol; |
| 10 var MakeError; | 10 var MakeError; |
| 11 var MakeEvalError; | 11 var MakeEvalError; |
| 12 var MakeRangeError; | 12 var MakeRangeError; |
| 13 var MakeReferenceError; | 13 var MakeReferenceError; |
| 14 var MakeSyntaxError; | 14 var MakeSyntaxError; |
| 15 var MakeTypeError; | 15 var MakeTypeError; |
| 16 var MakeURIError; | 16 var MakeURIError; |
| 17 | 17 |
| 18 (function(global, utils) { | 18 (function(global, utils) { |
| 19 | 19 |
| 20 %CheckIsBootstrapping(); | 20 %CheckIsBootstrapping(); |
| 21 | 21 |
| 22 // ------------------------------------------------------------------- | 22 // ------------------------------------------------------------------- |
| 23 // Imports | 23 // Imports |
| 24 | 24 |
| 25 var ArrayJoin; |
| 26 var Bool16x8ToString; |
| 27 var Bool32x4ToString; |
| 28 var Bool8x16ToString; |
| 29 var Float32x4ToString; |
| 30 var FunctionSourceString |
| 25 var GlobalObject = global.Object; | 31 var GlobalObject = global.Object; |
| 32 var Int16x8ToString; |
| 33 var Int32x4ToString; |
| 34 var Int8x16ToString; |
| 26 var InternalArray = utils.InternalArray; | 35 var InternalArray = utils.InternalArray; |
| 27 var ObjectDefineProperty = utils.ObjectDefineProperty; | 36 var ObjectDefineProperty; |
| 28 | |
| 29 var ArrayJoin; | |
| 30 var ObjectToString; | 37 var ObjectToString; |
| 31 var StringCharAt; | 38 var StringCharAt; |
| 32 var StringIndexOf; | 39 var StringIndexOf; |
| 33 var StringSubstring; | 40 var StringSubstring; |
| 34 | 41 var ToString; |
| 35 var Float32x4ToString; | |
| 36 var Int32x4ToString; | |
| 37 var Bool32x4ToString; | |
| 38 var Int16x8ToString; | |
| 39 var Bool16x8ToString; | |
| 40 var Int8x16ToString; | |
| 41 var Bool8x16ToString; | |
| 42 | |
| 43 | 42 |
| 44 utils.Import(function(from) { | 43 utils.Import(function(from) { |
| 45 ArrayJoin = from.ArrayJoin; | 44 ArrayJoin = from.ArrayJoin; |
| 45 Bool16x8ToString = from.Bool16x8ToString; |
| 46 Bool32x4ToString = from.Bool32x4ToString; |
| 47 Bool8x16ToString = from.Bool8x16ToString; |
| 48 Float32x4ToString = from.Float32x4ToString; |
| 49 FunctionSourceString = from.FunctionSourceString; |
| 50 Int16x8ToString = from.Int16x8ToString; |
| 51 Int32x4ToString = from.Int32x4ToString; |
| 52 Int8x16ToString = from.Int8x16ToString; |
| 53 ObjectDefineProperty = from.ObjectDefineProperty; |
| 46 ObjectToString = from.ObjectToString; | 54 ObjectToString = from.ObjectToString; |
| 47 StringCharAt = from.StringCharAt; | 55 StringCharAt = from.StringCharAt; |
| 48 StringIndexOf = from.StringIndexOf; | 56 StringIndexOf = from.StringIndexOf; |
| 49 StringSubstring = from.StringSubstring; | 57 StringSubstring = from.StringSubstring; |
| 50 Float32x4ToString = from.Float32x4ToString; | 58 }); |
| 51 Int32x4ToString = from.Int32x4ToString; | 59 |
| 52 Bool32x4ToString = from.Bool32x4ToString; | 60 utils.ImportNow(function(from) { |
| 53 Int16x8ToString = from.Int16x8ToString; | 61 ToString = from.ToString; |
| 54 Bool16x8ToString = from.Bool16x8ToString; | |
| 55 Int8x16ToString = from.Int8x16ToString; | |
| 56 Bool8x16ToString = from.Bool8x16ToString; | |
| 57 }); | 62 }); |
| 58 | 63 |
| 59 // ------------------------------------------------------------------- | 64 // ------------------------------------------------------------------- |
| 60 | 65 |
| 61 var GlobalError; | 66 var GlobalError; |
| 62 var GlobalTypeError; | 67 var GlobalTypeError; |
| 63 var GlobalRangeError; | 68 var GlobalRangeError; |
| 64 var GlobalURIError; | 69 var GlobalURIError; |
| 65 var GlobalSyntaxError; | 70 var GlobalSyntaxError; |
| 66 var GlobalReferenceError; | 71 var GlobalReferenceError; |
| 67 var GlobalEvalError; | 72 var GlobalEvalError; |
| 68 | 73 |
| 69 | 74 |
| 70 function NoSideEffectsObjectToString() { | 75 function NoSideEffectsObjectToString() { |
| 71 if (IS_UNDEFINED(this)) return "[object Undefined]"; | 76 if (IS_UNDEFINED(this)) return "[object Undefined]"; |
| 72 if (IS_NULL(this)) return "[object Null]"; | 77 if (IS_NULL(this)) return "[object Null]"; |
| 73 return "[object " + %_ClassOf(TO_OBJECT(this)) + "]"; | 78 return "[object " + %_ClassOf(TO_OBJECT(this)) + "]"; |
| 74 } | 79 } |
| 75 | 80 |
| 76 | 81 |
| 77 function NoSideEffectToString(obj) { | 82 function NoSideEffectToString(obj) { |
| 78 if (IS_STRING(obj)) return obj; | 83 if (IS_STRING(obj)) return obj; |
| 79 if (IS_NUMBER(obj)) return %_NumberToString(obj); | 84 if (IS_NUMBER(obj)) return %_NumberToString(obj); |
| 80 if (IS_BOOLEAN(obj)) return obj ? 'true' : 'false'; | 85 if (IS_BOOLEAN(obj)) return obj ? 'true' : 'false'; |
| 81 if (IS_UNDEFINED(obj)) return 'undefined'; | 86 if (IS_UNDEFINED(obj)) return 'undefined'; |
| 82 if (IS_NULL(obj)) return 'null'; | 87 if (IS_NULL(obj)) return 'null'; |
| 83 if (IS_FUNCTION(obj)) { | 88 if (IS_FUNCTION(obj)) { |
| 84 var str = %_CallFunction(obj, obj, $functionSourceString); | 89 var str = %_CallFunction(obj, obj, FunctionSourceString); |
| 85 if (str.length > 128) { | 90 if (str.length > 128) { |
| 86 str = %_SubString(str, 0, 111) + "...<omitted>..." + | 91 str = %_SubString(str, 0, 111) + "...<omitted>..." + |
| 87 %_SubString(str, str.length - 2, str.length); | 92 %_SubString(str, str.length - 2, str.length); |
| 88 } | 93 } |
| 89 return str; | 94 return str; |
| 90 } | 95 } |
| 91 if (IS_SYMBOL(obj)) return %_CallFunction(obj, $symbolToString); | 96 if (IS_SYMBOL(obj)) return %_CallFunction(obj, $symbolToString); |
| 92 if (IS_SIMD_VALUE(obj)) { | 97 if (IS_SIMD_VALUE(obj)) { |
| 93 switch (typeof(obj)) { | 98 switch (typeof(obj)) { |
| 94 case 'float32x4': return %_CallFunction(obj, Float32x4ToString); | 99 case 'float32x4': return %_CallFunction(obj, Float32x4ToString); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 | 145 |
| 141 | 146 |
| 142 // When formatting internally created error messages, do not | 147 // When formatting internally created error messages, do not |
| 143 // invoke overwritten error toString methods but explicitly use | 148 // invoke overwritten error toString methods but explicitly use |
| 144 // the error to string method. This is to avoid leaking error | 149 // the error to string method. This is to avoid leaking error |
| 145 // objects between script tags in a browser setting. | 150 // objects between script tags in a browser setting. |
| 146 function ToStringCheckErrorObject(obj) { | 151 function ToStringCheckErrorObject(obj) { |
| 147 if (CanBeSafelyTreatedAsAnErrorObject(obj)) { | 152 if (CanBeSafelyTreatedAsAnErrorObject(obj)) { |
| 148 return %_CallFunction(obj, ErrorToString); | 153 return %_CallFunction(obj, ErrorToString); |
| 149 } else { | 154 } else { |
| 150 return $toString(obj); | 155 return ToString(obj); |
| 151 } | 156 } |
| 152 } | 157 } |
| 153 | 158 |
| 154 | 159 |
| 155 function ToDetailString(obj) { | 160 function ToDetailString(obj) { |
| 156 if (obj != null && IS_OBJECT(obj) && obj.toString === ObjectToString) { | 161 if (obj != null && IS_OBJECT(obj) && obj.toString === ObjectToString) { |
| 157 var constructor = obj.constructor; | 162 var constructor = obj.constructor; |
| 158 if (typeof constructor == "function") { | 163 if (typeof constructor == "function") { |
| 159 var constructorName = constructor.name; | 164 var constructorName = constructor.name; |
| 160 if (IS_STRING(constructorName) && constructorName !== "") { | 165 if (IS_STRING(constructorName) && constructorName !== "") { |
| (...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 961 %FunctionSetInstanceClassName(f, 'Error'); | 966 %FunctionSetInstanceClassName(f, 'Error'); |
| 962 %AddNamedProperty(f.prototype, 'constructor', f, DONT_ENUM); | 967 %AddNamedProperty(f.prototype, 'constructor', f, DONT_ENUM); |
| 963 %AddNamedProperty(f.prototype, 'name', name, DONT_ENUM); | 968 %AddNamedProperty(f.prototype, 'name', name, DONT_ENUM); |
| 964 %SetCode(f, function(m) { | 969 %SetCode(f, function(m) { |
| 965 if (%_IsConstructCall()) { | 970 if (%_IsConstructCall()) { |
| 966 try { captureStackTrace(this, f); } catch (e) { } | 971 try { captureStackTrace(this, f); } catch (e) { } |
| 967 // Define all the expected properties directly on the error | 972 // Define all the expected properties directly on the error |
| 968 // object. This avoids going through getters and setters defined | 973 // object. This avoids going through getters and setters defined |
| 969 // on prototype objects. | 974 // on prototype objects. |
| 970 if (!IS_UNDEFINED(m)) { | 975 if (!IS_UNDEFINED(m)) { |
| 971 %AddNamedProperty(this, 'message', $toString(m), DONT_ENUM); | 976 %AddNamedProperty(this, 'message', ToString(m), DONT_ENUM); |
| 972 } | 977 } |
| 973 } else { | 978 } else { |
| 974 return new f(m); | 979 return new f(m); |
| 975 } | 980 } |
| 976 }); | 981 }); |
| 977 %SetNativeFlag(f); | 982 %SetNativeFlag(f); |
| 978 return f; | 983 return f; |
| 979 }; | 984 }; |
| 980 | 985 |
| 981 GlobalError = DefineError(global, function Error() { }); | 986 GlobalError = DefineError(global, function Error() { }); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1051 to.NoSideEffectToString = NoSideEffectToString; | 1056 to.NoSideEffectToString = NoSideEffectToString; |
| 1052 to.ToDetailString = ToDetailString; | 1057 to.ToDetailString = ToDetailString; |
| 1053 to.MakeError = MakeGenericError; | 1058 to.MakeError = MakeGenericError; |
| 1054 to.MessageGetLineNumber = GetLineNumber; | 1059 to.MessageGetLineNumber = GetLineNumber; |
| 1055 to.MessageGetColumnNumber = GetColumnNumber; | 1060 to.MessageGetColumnNumber = GetColumnNumber; |
| 1056 to.MessageGetSourceLine = GetSourceLine; | 1061 to.MessageGetSourceLine = GetSourceLine; |
| 1057 to.StackOverflowBoilerplate = StackOverflowBoilerplate; | 1062 to.StackOverflowBoilerplate = StackOverflowBoilerplate; |
| 1058 }); | 1063 }); |
| 1059 | 1064 |
| 1060 }); | 1065 }); |
| OLD | NEW |