From bd93673f40f36ef19dabbc67b7be3945a62e33d2 Mon Sep 17 00:00:00 2001 From: "yangguo@chromium.org" Date: Fri, 9 May 2014 13:14:09 +0000 Subject: [PATCH] Shorten autogenerated error message for functions only. R=yangguo@chromium.org, Yang, rossberg@chromium.org BUG=v8:3019, chromium:331971 LOG=Y Review URL: https://codereview.chromium.org/271733005 Patch from Andrey Adaykin . git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21224 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/messages.js | 15 +++++++++------ test/mjsunit/error-tostring-omit.js | 18 +++++------------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/messages.js b/src/messages.js index 1965da1..6c50b1b 100644 --- a/src/messages.js +++ b/src/messages.js @@ -177,10 +177,6 @@ function FormatString(format, args) { // str is one of %0, %1, %2 or %3. try { str = NoSideEffectToString(args[arg_num]); - if (str.length > 256) { - str = %_SubString(str, 0, 239) + "......" + - %_SubString(str, str.length - 2, str.length); - } } catch (e) { if (%IsJSModule(args[arg_num])) str = "module"; @@ -200,10 +196,17 @@ 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_BOOLEAN(obj)) return obj ? 'true' : 'false'; if (IS_UNDEFINED(obj)) return 'undefined'; if (IS_NULL(obj)) return 'null'; - if (IS_FUNCTION(obj)) return %_CallFunction(obj, FunctionToString); + if (IS_FUNCTION(obj)) { + var str = %_CallFunction(obj, FunctionToString); + if (str.length > 128) { + str = %_SubString(str, 0, 111) + "......" + + %_SubString(str, str.length - 2, str.length); + } + return str; + } if (IS_OBJECT(obj) && %GetDataProperty(obj, "toString") === ObjectToString) { var constructor = %GetDataProperty(obj, "constructor"); if (typeof constructor == "function") { diff --git a/test/mjsunit/error-tostring-omit.js b/test/mjsunit/error-tostring-omit.js index 111adfc..9ff43fa 100644 --- a/test/mjsunit/error-tostring-omit.js +++ b/test/mjsunit/error-tostring-omit.js @@ -37,23 +37,15 @@ function veryLongString() { "Nam accumsan dignissim turpis a turpis duis."; } +assertTrue(veryLongString().length > 256); -var re = /omitted/; +var re = /....../; try { - veryLongString.nonexistentMethod(); + Number.prototype.toFixed.call(veryLongString); } catch (e) { - assertTrue(e.message.length < 350); - // TODO(verwaest): Proper error message. - // assertTrue(re.test(e.message)); -} - -try { - veryLongString().nonexistentMethod(); -} catch (e) { - assertTrue(e.message.length < 350); - // TODO(verwaest): Proper error message. - // assertTrue(re.test(e.message)); + assertTrue(e.message.length < 256); + assertTrue(re.test(e.message)); } try { -- 2.7.4