Revision: 14772
Author: [email protected]
Date: Thu May 23 03:49:13 2013
Log: Merged r14185 into 3.14 branch.
Add an option to dump core when an uncaught exception is thrown.
This is done as a courtesy to node.js, as its current stable version (0.10)
relies on V8 version 3.14.5.
[email protected]
BUG=
Review URL: https://chromiumcodereview.appspot.com/15858003
http://code.google.com/p/v8/source/detail?r=14772
Modified:
/branches/3.14/src/flag-definitions.h
/branches/3.14/src/isolate.cc
/branches/3.14/src/version.cc
=======================================
--- /branches/3.14/src/flag-definitions.h Mon Oct 22 06:09:53 2012
+++ /branches/3.14/src/flag-definitions.h Thu May 23 03:49:13 2013
@@ -449,6 +449,8 @@
"Stack alingment in bytes in simulator (4 or 8, 8 is default)")
// isolate.cc
+DEFINE_bool(abort_on_uncaught_exception, false,
+ "abort program (dump core) when an uncaught exception is
thrown")
DEFINE_bool(trace_exception, false,
"print stack trace when throwing exceptions")
DEFINE_bool(preallocate_message_memory, false,
=======================================
--- /branches/3.14/src/isolate.cc Wed Sep 5 09:44:50 2012
+++ /branches/3.14/src/isolate.cc Thu May 23 03:49:13 2013
@@ -1080,6 +1080,7 @@
return false;
}
+static int fatal_exception_depth = 0;
void Isolate::DoThrow(Object* exception, MessageLocation* location) {
ASSERT(!has_pending_exception());
@@ -1150,6 +1151,20 @@
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 (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(this, message_obj));
+ 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.
=======================================
--- /branches/3.14/src/version.cc Mon Mar 4 05:04:30 2013
+++ /branches/3.14/src/version.cc Thu May 23 03:49:13 2013
@@ -35,7 +35,7 @@
#define MAJOR_VERSION 3
#define MINOR_VERSION 14
#define BUILD_NUMBER 5
-#define PATCH_LEVEL 8
+#define PATCH_LEVEL 9
// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
#define IS_CANDIDATE_VERSION 0
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.