| Index: src/messages.js
|
| diff --git a/src/messages.js b/src/messages.js
|
| index 58f0db09f3741f68213139f446284ad951861b7a..f04bed962d604bc45adaba1f0aec89c6240a6ec7 100644
|
| --- a/src/messages.js
|
| +++ b/src/messages.js
|
| @@ -167,7 +167,7 @@ function FormatString(format, args) {
|
| if (arg_num < 4) {
|
| // str is one of %0, %1, %2 or %3.
|
| try {
|
| - str = ToDetailString(args[arg_num]);
|
| + str = NoSideEffectToString(args[arg_num]);
|
| } catch (e) {
|
| if (%IsJSModule(args[arg_num]))
|
| str = "module";
|
| @@ -184,6 +184,26 @@ function FormatString(format, args) {
|
| }
|
|
|
|
|
| +function NoSideEffectToString(obj) {
|
| + if (IS_STRING(obj)) return obj;
|
| + if (IS_NUMBER(obj)) return %_NumberToString(obj);
|
| + if (IS_BOOLEAN(obj)) return x ? 'true' : 'false';
|
| + if (IS_UNDEFINED(obj)) return 'undefined';
|
| + if (IS_NULL(obj)) return 'null';
|
| + if (IS_OBJECT(obj) && %GetDataProperty(obj, "toString") === ObjectToString) {
|
| + var constructor = obj.constructor;
|
| + if (typeof constructor == "function") {
|
| + var constructorName = constructor.name;
|
| + if (IS_STRING(constructorName) && constructorName !== "") {
|
| + return "#<" + constructorName + ">";
|
| + }
|
| + }
|
| + }
|
| + if (IsNativeErrorObject(obj)) return %_CallFunction(obj, ErrorToString);
|
| + return %_CallFunction(obj, ObjectToString);
|
| +}
|
| +
|
| +
|
| // To check if something is a native error we need to check the
|
| // concrete native error types. It is not sufficient to use instanceof
|
| // since it possible to create an object that has Error.prototype on
|
|
|