Never mind this :)
On Mon, Nov 12, 2012 at 5:12 PM, <[email protected]> wrote: > Reviewers: Sven Panne, > > Message: > This fixes a problem caused by r12926. It turns out that uncaught > exceptions > have to be attached as such to the message object passed to the embedder, > as > opposed to turned into a string. Therefore, we turn the uncaught exception > to a > string at the point where it is needed (in FormatMessage). > > Description: > Fix handling of uncaught exceptions. > > > BUG= > > > Please review this at > https://chromiumcodereview.**appspot.com/11360193/<https://chromiumcodereview.appspot.com/11360193/> > > SVN Base: > https://v8.googlecode.com/svn/**branches/bleeding_edge<https://v8.googlecode.com/svn/branches/bleeding_edge> > > Affected files: > M src/isolate.cc > M src/messages.js > A + test/message/stacktrace.js > A + test/message/stacktrace.out > M test/mjsunit/mjsunit.js > > > Index: src/isolate.cc > diff --git a/src/isolate.cc b/src/isolate.cc > index eec5a54d737e902caddfcfe5679dcb**33656c8dd1..** > 4768d99c402600acb77528cc4487b1**9084aa25fa 100644 > --- a/src/isolate.cc > +++ b/src/isolate.cc > @@ -1228,14 +1228,7 @@ void Isolate::DoThrow(Object* exception, > MessageLocation* location) { > stack_trace_for_uncaught_**exceptions_options_); > } > } > - // Stringify custom error objects for the message object. > - if (exception_handle->IsJSObject(**) && > !IsErrorObject(exception_**handle)) > { > - bool failed = false; > - exception_handle = Execution::ToString(exception_**handle, > &failed); > - if (failed) { > - exception_handle = factory()->LookupAsciiSymbol("**exception"); > - } > - } > + > Handle<Object> message_obj = MessageHandler::**MakeMessageObject( > "uncaught_exception", > location, > Index: src/messages.js > diff --git a/src/messages.js b/src/messages.js > index 30f6682adab6c5c2cd91a96cbed1a0**7f9aca8604..** > 1e3152373ccc2960c1adef7b42e528**9edded378b 100644 > --- a/src/messages.js > +++ b/src/messages.js > @@ -276,6 +276,8 @@ function MakeGenericError(constructor, type, args) { > // Helper functions; called from the runtime system. > function FormatMessage(type, args) { > var format = kMessages[type]; > + // If an exception was not caught, we turn it into a string for the > message. > + if (type == "uncaught_exception") args[0] = ToDetailString(args[0]); > if (!format) return "<unknown message " + type + ">"; > return FormatString(format, args); > } > Index: test/message/stacktrace.js > diff --git a/test/mjsunit/regress/**regress-2373.js > b/test/message/stacktrace.js > similarity index 95% > copy from test/mjsunit/regress/regress-**2373.js > copy to test/message/stacktrace.js > index 16a87ece6f57aee42d77171e8087db**412610b0a3..** > 9844dc101f1621b7905c0f0ce18d8e**6597708c9a 100644 > --- a/test/mjsunit/regress/**regress-2373.js > +++ b/test/message/stacktrace.js > @@ -25,5 +25,4 @@ > // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > > -var o = JSON.parse('{"a":2600753951}')**; > -assertEquals(2600753951, o.a); > +(function f() { throw new Error(); })(); > Index: test/message/stacktrace.out > diff --git a/tools/testrunner/objects/__**init__.py > b/test/message/stacktrace.out > similarity index 91% > copy from tools/testrunner/objects/__**init__.py > copy to test/message/stacktrace.out > index 202a262709c95ba356e9e1ef6aa2f5**256690a24a..** > 3020e74f776892796415249498fe4a**5af405a01e 100644 > --- a/tools/testrunner/objects/__**init__.py > +++ b/test/message/stacktrace.out > @@ -24,3 +24,11 @@ > # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + > +*%(basename)s:28: Error > +(function f() { throw new Error(); })(); > + ^ > +Error > + at f (*%(basename)s:28:23) > + at *%(basename)s:28:38 > + > Index: test/mjsunit/mjsunit.js > diff --git a/test/mjsunit/mjsunit.js b/test/mjsunit/mjsunit.js > index 25d7c004326ce3df03ebe83edb2f0b**ecd5336bba..** > 2c382201c4b19c0381c745f72d4972**85aea860c7 100644 > --- a/test/mjsunit/mjsunit.js > +++ b/test/mjsunit/mjsunit.js > @@ -39,6 +39,7 @@ function MjsUnitAssertionError(message) { > > > MjsUnitAssertionError.**prototype.toString = function () { > + print("abc"); > return this.message; > }; > > > > -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
