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

Reply via email to