| Index: test/cctest/test-api.cc | 
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc | 
| index 8db3fcb438d9743f58845f4844526172d1a12331..eae682a0979c1404f2fa680e455ca9ff356046e5 100644 | 
| --- a/test/cctest/test-api.cc | 
| +++ b/test/cctest/test-api.cc | 
| @@ -3056,6 +3056,32 @@ TEST(APIThrowMessageOverwrittenToString) { | 
| } | 
|  | 
|  | 
| +static void check_custom_error_message( | 
| +    v8::Handle<v8::Message> message, | 
| +    v8::Handle<v8::Value> data) { | 
| +  const char* uncaught_error = "Uncaught MyError toString"; | 
| +  CHECK(message->Get()->Equals(v8_str(uncaught_error))); | 
| +} | 
| + | 
| + | 
| +TEST(CustomErrorToString) { | 
| +  v8::HandleScope scope; | 
| +  v8::V8::AddMessageListener(check_custom_error_message); | 
| +  LocalContext context; | 
| +  CompileRun( | 
| +    "function MyError(name, message) {                   " | 
| +    "  this.name = name;                                 " | 
| +    "  this.message = message;                           " | 
| +    "}                                                   " | 
| +    "MyError.prototype = Object.create(Error.prototype); " | 
| +    "MyError.prototype.toString = function() {           " | 
| +    "  return 'MyError toString';                        " | 
| +    "};                                                  " | 
| +    "throw new MyError('my name', 'my message');         "); | 
| +  v8::V8::RemoveMessageListeners(check_custom_error_message); | 
| +} | 
| + | 
| + | 
| static void receive_message(v8::Handle<v8::Message> message, | 
| v8::Handle<v8::Value> data) { | 
| message->Get(); | 
|  |