node/deps/v8
Julien Gilli 8b50e95f06 deps: backport 1ee712a from V8 upstream
Backport 1ee712ab8687e5f4dec93d45da068d37d28feb8b from V8 upstream.

Original commit message:

  Add SetAbortOnUncaughtExceptionCallback API

  The --abort-on-uncaught-exception command line switch makes
  Isolate::Throw abort if the error being thrown cannot be caught by a
  try/catch block.

  Embedders may want to use other mechanisms than try/catch blocks to
  handle uncaught exceptions. For instance, Node.js has "domain" objects
  that have error handlers that can handle uncaught exception like
  following:

  var d = domain.create();

  d.on('error', function onError(err) {
    console.log('Handling error');
  });

  d.run(function() {
    throw new Error("boom");
  });

  These error handlers are called by isolates' message listeners.

  If --abort-on-uncaught-exception is *not* used, the isolate's
  message listener will be called, which will in turn call the domain's
  error handler. The process will output 'Handling error' and will exit
  successfully (not due to an uncaught exception). This is the behavior
  that Node.js users expect.

  However, if --abort-on-uncaught-exception is used and when throwing an
  error within a domain that has an error handler, the process will abort
  and the domain's error handler will not be called. This is not the
  behavior that Node.js users expect.

  Having a SetAbortOnUncaughtExceptionCallback API allows embedders to
  determine when it's not appropriate to abort and instead handle the
  exception via the isolate's message listener.

  In the example above, Node.js would set a custom callback with
  SetAbortOnUncaughtExceptionCallback that would be implemented as
  following (the sample code has been simplified to remove what's not
  relevant to this change):

  bool ShouldAbortOnUncaughtException(Isolate* isolate) {
    return !IsDomainActive();
  }

  Now when --abort-on-uncaught-exception is used, Isolate::Throw would
  call that callback and determine that it should not abort if a domain
  with an error handler is active. Instead, the isolate's message listener
  would be called and the error would be handled by the domain's error
  handler.

  I believe this can also be useful for other embedders.

  BUG=

  R=bmeurer@chromium.org

  Review URL: https://codereview.chromium.org/1375933003

  Cr-Commit-Position: refs/heads/master@{#31111}

PR: #3036
PR-URL: https://github.com/nodejs/node/pull/3036
Reviewed-By: Ben Noordhuis <ben@strongloop.com>
2015-10-07 20:39:15 -07:00
..
benchmarks
build deps: upgrade V8 to 4.5.103.33 2015-09-15 13:53:37 -04:00
include deps: backport 1ee712a from V8 upstream 2015-10-07 20:39:15 -07:00
infra deps: upgrade V8 to 4.5.103.24 2015-09-06 21:39:01 +10:00
samples deps: upgrade V8 to 4.5.103.30 2015-09-06 21:39:05 +10:00
src deps: backport 1ee712a from V8 upstream 2015-10-07 20:39:15 -07:00
test deps: backport 1ee712a from V8 upstream 2015-10-07 20:39:15 -07:00
testing deps: upgrade V8 to 4.5.103.24 2015-09-06 21:39:01 +10:00
tools deps: backport c281c15 from V8's upstream 2015-09-24 22:09:45 -07:00
.clang-format
.gitignore deps: upgrade V8 to 4.5.103.24 2015-09-06 21:39:01 +10:00
.ycm_extra_conf.py
AUTHORS deps: backport 75e43a6 from v8 upstream 2015-09-03 17:46:24 -04:00
BUILD.gn deps: upgrade V8 to 4.5.103.30 2015-09-06 21:39:05 +10:00
ChangeLog deps: upgrade V8 to 4.5.103.24 2015-09-06 21:39:01 +10:00
codereview.settings deps: upgrade V8 to 4.5.103.33 2015-09-15 13:53:37 -04:00
DEPS deps: upgrade V8 to 4.5.103.24 2015-09-06 21:39:01 +10:00
LICENSE deps: upgrade V8 to 4.5.103.24 2015-09-06 21:39:01 +10:00
LICENSE.strongtalk
LICENSE.v8
LICENSE.valgrind
Makefile deps: upgrade V8 to 4.5.103.24 2015-09-06 21:39:01 +10:00
Makefile.android deps: upgrade V8 to 4.5.103.24 2015-09-06 21:39:01 +10:00
Makefile.nacl
OWNERS
PRESUBMIT.py deps: update v8 to 4.4.63.9 2015-08-04 11:56:14 -07:00
README.md deps: update v8 to 4.3.61.21 2015-08-04 11:56:09 -07:00
WATCHLISTS deps: update v8 to 4.4.63.9 2015-08-04 11:56:14 -07:00

V8 JavaScript Engine

V8 is Google's open source JavaScript engine.

V8 implements ECMAScript as specified in ECMA-262.

V8 is written in C++ and is used in Google Chrome, the open source browser from Google.

V8 can run standalone, or can be embedded into any C++ application.

V8 Project page: https://code.google.com/p/v8/

Getting the Code

Checkout depot tools, and run

    fetch v8

This will checkout V8 into the directory v8 and fetch all of its dependencies. To stay up to date, run

    git pull origin
    gclient sync

For fetching all branches, add the following into your remote configuration in .git/config:

    fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*
    fetch = +refs/tags/*:refs/tags/*