Preserve message when rethrowing exception
A new message was always generated if there is a the top-most verbose TryCatch, even when rethrowing an exception from a TryCatch that is going out of scope, and we already have a message. BUG=v8:3583 LOG=Y R=yangguo@chromium.org Review URL: https://codereview.chromium.org/587703002 Patch from Jens Widell <jl@opera.com>. git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24152 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
262c98593f
commit
6393ea9e1a
@ -1019,9 +1019,9 @@ void Isolate::DoThrow(Object* exception, MessageLocation* location) {
|
||||
ShouldReportException(&can_be_caught_externally, catchable_by_javascript);
|
||||
bool report_exception = catchable_by_javascript && should_report_exception;
|
||||
bool try_catch_needs_message =
|
||||
can_be_caught_externally && try_catch_handler()->capture_message_ &&
|
||||
!thread_local_top()->rethrowing_message_;
|
||||
can_be_caught_externally && try_catch_handler()->capture_message_;
|
||||
bool bootstrapping = bootstrapper()->IsActive();
|
||||
bool rethrowing_message = thread_local_top()->rethrowing_message_;
|
||||
|
||||
thread_local_top()->rethrowing_message_ = false;
|
||||
|
||||
@ -1031,7 +1031,7 @@ void Isolate::DoThrow(Object* exception, MessageLocation* location) {
|
||||
}
|
||||
|
||||
// Generate the message if required.
|
||||
if (report_exception || try_catch_needs_message) {
|
||||
if (!rethrowing_message && (report_exception || try_catch_needs_message)) {
|
||||
MessageLocation potential_computed_location;
|
||||
if (location == NULL) {
|
||||
// If no location was specified we use a computed one instead.
|
||||
|
Loading…
Reference in New Issue
Block a user