| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 00f1e0b7e156dd3f4a8810ddcb90f580450cefc0..846ebf3de6beea794a144a10bd0e180bf7d44641 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -372,6 +372,13 @@ void V8::MakeWeak(i::Object** object, void* parameters,
|
| }
|
|
|
|
|
| +void V8::MakeReallyWeak(i::Object** object, void* parameters,
|
| + WeakReferenceCallback callback) {
|
| + LOG_API("MakeReallyWeak");
|
| + i::GlobalHandles::MakeReallyWeak(object, parameters, callback);
|
| +}
|
| +
|
| +
|
| void V8::ClearWeak(i::Object** obj) {
|
| LOG_API("ClearWeak");
|
| i::GlobalHandles::ClearWeakness(obj);
|
| @@ -395,7 +402,9 @@ bool V8::IsGlobalWeak(i::Object** obj) {
|
| void V8::DisposeGlobal(i::Object** obj) {
|
| LOG_API("DisposeGlobal");
|
| if (!i::V8::IsRunning()) return;
|
| - if ((*obj)->IsGlobalContext()) i::Heap::NotifyContextDisposed();
|
| + if (!i::GlobalHandles::IsReallyWeak(obj) && (*obj)->IsGlobalContext()) {
|
| + i::Heap::NotifyContextDisposed();
|
| + }
|
| i::GlobalHandles::Destroy(obj);
|
| }
|
|
|
|
|