| 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 (function(global, utils) { | 7 (function(global, utils) { |
| 8 | 8 |
| 9 %CheckIsBootstrapping(); | 9 %CheckIsBootstrapping(); |
| 10 | 10 |
| 11 // ------------------------------------------------------------------- | 11 // ------------------------------------------------------------------- |
| 12 // Imports | 12 // Imports |
| 13 | 13 |
| 14 var ArrayJoin; | 14 var ArrayJoin; |
| 15 var Bool16x8ToString; | 15 var Bool16x8ToString; |
| 16 var Bool32x4ToString; | 16 var Bool32x4ToString; |
| 17 var Bool8x16ToString; | 17 var Bool8x16ToString; |
| 18 var CallSite = utils.ImportNow("CallSite"); | 18 var CallSite = utils.ImportNow("CallSite"); |
| 19 var callSiteConstructorSymbol = | |
| 20 utils.ImportNow("call_site_constructor_symbol"); | |
| 21 var callSiteReceiverSymbol = | |
| 22 utils.ImportNow("call_site_receiver_symbol"); | |
| 23 var callSiteFunctionSymbol = | |
| 24 utils.ImportNow("call_site_function_symbol"); | |
| 25 var callSitePositionSymbol = | |
| 26 utils.ImportNow("call_site_position_symbol"); | |
| 27 var callSiteStrictSymbol = | |
| 28 utils.ImportNow("call_site_strict_symbol"); | |
| 29 var callSiteWasmObjectSymbol = | |
| 30 utils.ImportNow("call_site_wasm_obj_symbol"); | |
| 31 var callSiteWasmFunctionIndexSymbol = | |
| 32 utils.ImportNow("call_site_wasm_func_index_symbol"); | |
| 33 var Float32x4ToString; | 19 var Float32x4ToString; |
| 34 var GlobalObject = global.Object; | 20 var GlobalObject = global.Object; |
| 35 var GlobalError = global.Error; | 21 var GlobalError = global.Error; |
| 36 var GlobalEvalError = global.EvalError; | 22 var GlobalEvalError = global.EvalError; |
| 37 var GlobalRangeError = global.RangeError; | 23 var GlobalRangeError = global.RangeError; |
| 38 var GlobalReferenceError = global.ReferenceError; | 24 var GlobalReferenceError = global.ReferenceError; |
| 39 var GlobalSyntaxError = global.SyntaxError; | 25 var GlobalSyntaxError = global.SyntaxError; |
| 40 var GlobalTypeError = global.TypeError; | 26 var GlobalTypeError = global.TypeError; |
| 41 var GlobalURIError = global.URIError; | 27 var GlobalURIError = global.URIError; |
| 42 var Int16x8ToString; | 28 var Int16x8ToString; |
| 43 var Int32x4ToString; | 29 var Int32x4ToString; |
| 44 var Int8x16ToString; | 30 var Int8x16ToString; |
| 45 var InternalArray = utils.InternalArray; | 31 var InternalArray = utils.InternalArray; |
| 46 var internalErrorSymbol = utils.ImportNow("internal_error_symbol"); | 32 var internalErrorSymbol = utils.ImportNow("internal_error_symbol"); |
| 47 var ObjectHasOwnProperty; | 33 var ObjectHasOwnProperty; |
| 48 var ObjectToString = utils.ImportNow("object_to_string"); | 34 var ObjectToString = utils.ImportNow("object_to_string"); |
| 49 var Script = utils.ImportNow("Script"); | 35 var Script = utils.ImportNow("Script"); |
| 50 var stackTraceSymbol = utils.ImportNow("stack_trace_symbol"); | 36 var stackTraceSymbol = utils.ImportNow("stack_trace_symbol"); |
| 51 var StringIndexOf; | |
| 52 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); | 37 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
| 53 var Uint16x8ToString; | 38 var Uint16x8ToString; |
| 54 var Uint32x4ToString; | 39 var Uint32x4ToString; |
| 55 var Uint8x16ToString; | 40 var Uint8x16ToString; |
| 56 | 41 |
| 57 utils.Import(function(from) { | 42 utils.Import(function(from) { |
| 58 ArrayJoin = from.ArrayJoin; | 43 ArrayJoin = from.ArrayJoin; |
| 59 Bool16x8ToString = from.Bool16x8ToString; | 44 Bool16x8ToString = from.Bool16x8ToString; |
| 60 Bool32x4ToString = from.Bool32x4ToString; | 45 Bool32x4ToString = from.Bool32x4ToString; |
| 61 Bool8x16ToString = from.Bool8x16ToString; | 46 Bool8x16ToString = from.Bool8x16ToString; |
| 62 Float32x4ToString = from.Float32x4ToString; | 47 Float32x4ToString = from.Float32x4ToString; |
| 63 Int16x8ToString = from.Int16x8ToString; | 48 Int16x8ToString = from.Int16x8ToString; |
| 64 Int32x4ToString = from.Int32x4ToString; | 49 Int32x4ToString = from.Int32x4ToString; |
| 65 Int8x16ToString = from.Int8x16ToString; | 50 Int8x16ToString = from.Int8x16ToString; |
| 66 ObjectHasOwnProperty = from.ObjectHasOwnProperty; | 51 ObjectHasOwnProperty = from.ObjectHasOwnProperty; |
| 67 StringIndexOf = from.StringIndexOf; | |
| 68 Uint16x8ToString = from.Uint16x8ToString; | 52 Uint16x8ToString = from.Uint16x8ToString; |
| 69 Uint32x4ToString = from.Uint32x4ToString; | 53 Uint32x4ToString = from.Uint32x4ToString; |
| 70 Uint8x16ToString = from.Uint8x16ToString; | 54 Uint8x16ToString = from.Uint8x16ToString; |
| 71 }); | 55 }); |
| 72 | 56 |
| 73 // ------------------------------------------------------------------- | 57 // ------------------------------------------------------------------- |
| 74 | 58 |
| 75 | 59 |
| 76 | 60 |
| 77 function NoSideEffectsObjectToString() { | 61 function NoSideEffectsObjectToString() { |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 ); | 249 ); |
| 266 | 250 |
| 267 | 251 |
| 268 function GetStackTraceLine(recv, fun, pos, isGlobal) { | 252 function GetStackTraceLine(recv, fun, pos, isGlobal) { |
| 269 return new CallSite(recv, fun, pos, false).toString(); | 253 return new CallSite(recv, fun, pos, false).toString(); |
| 270 } | 254 } |
| 271 | 255 |
| 272 // ---------------------------------------------------------------------------- | 256 // ---------------------------------------------------------------------------- |
| 273 // Error implementation | 257 // Error implementation |
| 274 | 258 |
| 275 function CallSiteToString() { | |
| 276 if (HAS_PRIVATE(this, callSiteWasmObjectSymbol)) { | |
| 277 var funName = this.getFunctionName(); | |
| 278 var funcIndex = GET_PRIVATE(this, callSiteWasmFunctionIndexSymbol); | |
| 279 var pos = this.getPosition(); | |
| 280 if (IS_NULL(funName)) funName = "<WASM UNNAMED>"; | |
| 281 return funName + " (<WASM>[" + funcIndex + "]+" + pos + ")"; | |
| 282 } | |
| 283 | |
| 284 var fileName; | |
| 285 var fileLocation = ""; | |
| 286 if (this.isNative()) { | |
| 287 fileLocation = "native"; | |
| 288 } else { | |
| 289 fileName = this.getScriptNameOrSourceURL(); | |
| 290 if (!fileName && this.isEval()) { | |
| 291 fileLocation = this.getEvalOrigin(); | |
| 292 fileLocation += ", "; // Expecting source position to follow. | |
| 293 } | |
| 294 | |
| 295 if (fileName) { | |
| 296 fileLocation += fileName; | |
| 297 } else { | |
| 298 // Source code does not originate from a file and is not native, but we | |
| 299 // can still get the source position inside the source string, e.g. in | |
| 300 // an eval string. | |
| 301 fileLocation += "<anonymous>"; | |
| 302 } | |
| 303 var lineNumber = this.getLineNumber(); | |
| 304 if (lineNumber != null) { | |
| 305 fileLocation += ":" + lineNumber; | |
| 306 var columnNumber = this.getColumnNumber(); | |
| 307 if (columnNumber) { | |
| 308 fileLocation += ":" + columnNumber; | |
| 309 } | |
| 310 } | |
| 311 } | |
| 312 | |
| 313 var line = ""; | |
| 314 var functionName = this.getFunctionName(); | |
| 315 var addSuffix = true; | |
| 316 var isConstructor = this.isConstructor(); | |
| 317 var isMethodCall = !(this.isToplevel() || isConstructor); | |
| 318 if (isMethodCall) { | |
| 319 var typeName = GetTypeName(GET_PRIVATE(this, callSiteReceiverSymbol), true); | |
| 320 var methodName = this.getMethodName(); | |
| 321 if (functionName) { | |
| 322 if (typeName && %_Call(StringIndexOf, functionName, typeName) != 0) { | |
| 323 line += typeName + "."; | |
| 324 } | |
| 325 line += functionName; | |
| 326 if (methodName && | |
| 327 (%_Call(StringIndexOf, functionName, "." + methodName) != | |
| 328 functionName.length - methodName.length - 1)) { | |
| 329 line += " [as " + methodName + "]"; | |
| 330 } | |
| 331 } else { | |
| 332 line += typeName + "." + (methodName || "<anonymous>"); | |
| 333 } | |
| 334 } else if (isConstructor) { | |
| 335 line += "new " + (functionName || "<anonymous>"); | |
| 336 } else if (functionName) { | |
| 337 line += functionName; | |
| 338 } else { | |
| 339 line += fileLocation; | |
| 340 addSuffix = false; | |
| 341 } | |
| 342 if (addSuffix) { | |
| 343 line += " (" + fileLocation + ")"; | |
| 344 } | |
| 345 return line; | |
| 346 } | |
| 347 | |
| 348 %AddNamedProperty(CallSite.prototype, "toString", CallSiteToString, | |
| 349 DONT_ENUM | DONT_DELETE | READ_ONLY); | |
| 350 %SetNativeFlag(CallSiteToString); | |
| 351 | |
| 352 | 259 |
| 353 function FormatErrorString(error) { | 260 function FormatErrorString(error) { |
| 354 try { | 261 try { |
| 355 return %_Call(ErrorToString, error); | 262 return %_Call(ErrorToString, error); |
| 356 } catch (e) { | 263 } catch (e) { |
| 357 try { | 264 try { |
| 358 return "<error: " + e + ">"; | 265 return "<error: " + e + ">"; |
| 359 } catch (ee) { | 266 } catch (ee) { |
| 360 return "<error>"; | 267 return "<error>"; |
| 361 } | 268 } |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 484 utils.Export(function(to) { | 391 utils.Export(function(to) { |
| 485 to.ErrorToString = ErrorToString; | 392 to.ErrorToString = ErrorToString; |
| 486 to.MakeError = MakeError; | 393 to.MakeError = MakeError; |
| 487 to.MakeRangeError = MakeRangeError; | 394 to.MakeRangeError = MakeRangeError; |
| 488 to.MakeSyntaxError = MakeSyntaxError; | 395 to.MakeSyntaxError = MakeSyntaxError; |
| 489 to.MakeTypeError = MakeTypeError; | 396 to.MakeTypeError = MakeTypeError; |
| 490 to.MakeURIError = MakeURIError; | 397 to.MakeURIError = MakeURIError; |
| 491 }); | 398 }); |
| 492 | 399 |
| 493 }); | 400 }); |
| OLD | NEW |