void Isolate::Exit() {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
-diff --git a/src/isolate.cc b/src/isolate.cc
-index 5a5293e..0b38616 100644
---- a/src/isolate.cc
-+++ b/src/isolate.cc
-@@ -1152,18 +1152,26 @@ void Isolate::DoThrow(Object* exception, MessageLocation* location) {
+--- v8-3.15.11.18/src/isolate.cc 2013-05-07 21:00:06.000000000 +0300
++++ v8-3.15.11.18/src/isolate.cc 2015-10-17 22:30:21.746915216 +0300
+@@ -1250,6 +1250,28 @@
+ thread_local_top()->pending_message_start_pos_ = location->start_pos();
thread_local_top()->pending_message_end_pos_ = location->end_pos();
}
-
-- // If the abort-on-uncaught-exception flag is specified, abort on any
-- // exception not caught by JavaScript, even when an external handler is
-- // present. This flag is intended for use by JavaScript developers, so
-- // print a user-friendly stack trace (not an internal one).
++
+ // If the abort-on-uncaught-exception flag is specified, and if the
+ // exception is not caught by JavaScript (even when an external handler is
+ // present).
- if (fatal_exception_depth == 0 &&
- FLAG_abort_on_uncaught_exception &&
- (report_exception || can_be_caught_externally)) {
-- fatal_exception_depth++;
-- fprintf(stderr, "%s\n\nFROM\n",
-- *MessageHandler::GetLocalizedMessage(message_obj));
-- PrintCurrentStackTrace(stderr);
-- OS::Abort();
++ if (fatal_exception_depth == 0 &&
++ FLAG_abort_on_uncaught_exception &&
++ (report_exception || can_be_caught_externally)) {
+ // If the embedder didn't specify a custom uncaught exception callback,
+ // or if the custom callback determined that V8 should abort, then
+ // abort
+ PrintCurrentStackTrace(stderr);
+ OS::Abort();
+ }
- }
++ }
} else if (location != NULL && !location->script().is_null()) {
// We are bootstrapping and caught an error where the location is set
+ // and we have a script for the location.
@@ -1339,6 +1347,10 @@ void Isolate::SetCaptureStackTraceForUncaughtExceptions(
stack_trace_for_uncaught_exceptions_options_ = options;
}