joyent/node — pull request #5804 by bnoordhuis (2013-07-06 01:26:45+00:00)
Title: v8: upgrade to v3.20.2, update src/

This is the big one people:

```
$ git diff --shortstat origin/master
1234 files changed, 171067 insertions(+), 18217 deletions(-)
```

The major changes are summed up in the third commit. For posterity:

```
This is a big commit that touches just about every file in the src/
directory. The V8 API has changed in significant ways. The most
important changes are:

* Binding functions take a const v8::FunctionCallbackInfo& argument
rather than a const v8::Arguments& argument.

* Binding functions return void rather than v8::Handle. The
return value is returned with the args.GetReturnValue().Set() family
of functions.

* v8::Persistent no longer derives from v8::Handle and no longer
allows you to directly dereference the object that the persistent
handle points to. This means that the common pattern of caching
oft-used JS values in a persistent handle no longer quite works,
you first need to reconstruct a v8::Local from the persistent
handle with the Local::New(isolate, persistent) factory method.

A handful of (internal) convenience classes and functions have been
added to make dealing with the new API a little easier.

The most visible one is node::Cached, which wraps a v8::Persistent
with some template sugar. It can hold arbitrary types but so far it's
exclusively used for v8::Strings (which was by far the most commonly
cached handle type.)
```