Revision: 9776
Author:   [email protected]
Date:     Tue Oct 25 06:43:19 2011
Log: Print out line number and extension name when compilation of an extension fails. This fixes issue 305.
Review URL: http://codereview.chromium.org/8332029
http://code.google.com/p/v8/source/detail?r=9776

Modified:
 /branches/bleeding_edge/src/bootstrapper.cc
 /branches/bleeding_edge/src/isolate.cc

=======================================
--- /branches/bleeding_edge/src/bootstrapper.cc Mon Oct 24 08:56:18 2011
+++ /branches/bleeding_edge/src/bootstrapper.cc Tue Oct 25 06:43:19 2011
@@ -38,6 +38,7 @@
 #include "macro-assembler.h"
 #include "natives.h"
 #include "objects-visiting.h"
+#include "platform.h"
 #include "snapshot.h"
 #include "extensions/externalize-string-extension.h"
 #include "extensions/gc-extension.h"
@@ -2006,6 +2007,12 @@
       false);
   ASSERT(isolate->has_pending_exception() != result);
   if (!result) {
+    // We print out the name of the extension that fail to install.
+    // When an error is thrown during bootstrapping we automatically print
+    // the line number at which this happened to the console in the isolate
+    // error throwing functionality.
+    OS::PrintError("Error installing extension '%s'.\n",
+                   current->extension()->name());
     isolate->clear_pending_exception();
   }
   current->set_state(v8::INSTALLED);
=======================================
--- /branches/bleeding_edge/src/isolate.cc      Tue Oct 18 04:18:55 2011
+++ /branches/bleeding_edge/src/isolate.cc      Tue Oct 25 06:43:19 2011
@@ -1072,6 +1072,16 @@
       message_obj = MessageHandler::MakeMessageObject("uncaught_exception",
location, HandleVector<Object>(&exception_handle, 1), stack_trace,
           stack_trace_object);
+    } 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.
+      // In this case we could have an extension (or an internal error
+ // somewhere) and we print out the line number at which the error occured
+      // to the console for easier debugging.
+      int line_number = GetScriptLineNumberSafe(location->script(),
+                                                location->start_pos());
+ OS::PrintError("Extension or internal compilation error at line %d.\n",
+                     line_number);
     }
   }

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to