| Index: src/global-handles.cc | 
| diff --git a/src/global-handles.cc b/src/global-handles.cc | 
| index 6d17a9a25fac4bdf65da975bcdc7c9e67f3fe9b2..29432bb5b7c7782f60f9798239fcbe5602c018f5 100644 | 
| --- a/src/global-handles.cc | 
| +++ b/src/global-handles.cc | 
| @@ -235,7 +235,7 @@ class GlobalHandles::Node { | 
|  | 
| void MakeWeak(GlobalHandles* global_handles, | 
| void* parameter, | 
| -                WeakReferenceCallback weak_reference_callback, | 
| +                RevivableCallback weak_reference_callback, | 
| NearDeathCallback near_death_callback) { | 
| ASSERT(state() != FREE); | 
| set_state(WEAK); | 
| @@ -267,7 +267,7 @@ class GlobalHandles::Node { | 
| set_state(NEAR_DEATH); | 
| set_parameter(NULL); | 
|  | 
| -    v8::Persistent<v8::Object> object = ToApi<v8::Object>(handle()); | 
| +    v8::Persistent<v8::Value> object = ToApi<v8::Value>(handle()); | 
| { | 
| // Check that we are not passing a finalized external string to | 
| // the callback. | 
| @@ -279,9 +279,11 @@ class GlobalHandles::Node { | 
| VMState<EXTERNAL> state(isolate); | 
| if (near_death_callback_ != NULL) { | 
| if (IsWeakCallback::decode(flags_)) { | 
| -          WeakReferenceCallback callback = | 
| -              reinterpret_cast<WeakReferenceCallback>(near_death_callback_); | 
| -          callback(object, par); | 
| +          RevivableCallback callback = | 
| +              reinterpret_cast<RevivableCallback>(near_death_callback_); | 
| +          callback(reinterpret_cast<v8::Isolate*>(isolate), | 
| +                   &object, | 
| +                   par); | 
| } else { | 
| near_death_callback_(reinterpret_cast<v8::Isolate*>(isolate), | 
| object, | 
| @@ -493,9 +495,9 @@ void GlobalHandles::Destroy(Object** location) { | 
|  | 
| void GlobalHandles::MakeWeak(Object** location, | 
| void* parameter, | 
| -                             WeakReferenceCallback weak_reference_callback, | 
| +                             RevivableCallback weak_reference_callback, | 
| NearDeathCallback near_death_callback) { | 
| -  ASSERT(near_death_callback != NULL); | 
| +  ASSERT((weak_reference_callback == NULL) != (near_death_callback == NULL)); | 
| Node::FromLocation(location)->MakeWeak(this, | 
| parameter, | 
| weak_reference_callback, | 
|  |