| Index: include/v8.h
|
| diff --git a/include/v8.h b/include/v8.h
|
| index 65d302e7bd1f0fa607c551a41b4d3b7d664a52a1..c2f7d3da77c90889a2e784465a61a03ea04cff7c 100644
|
| --- a/include/v8.h
|
| +++ b/include/v8.h
|
| @@ -389,6 +389,8 @@ template <class T> class Persistent : public Handle<T> {
|
| * it the object reference and the given parameters.
|
| */
|
| inline void MakeWeak(void* parameters, WeakReferenceCallback callback);
|
| + inline void MakeWeak(Isolate* isolate, void* parameters,
|
| + WeakReferenceCallback callback);
|
|
|
| /** Clears the weak reference to this object. */
|
| inline void ClearWeak();
|
| @@ -410,6 +412,7 @@ template <class T> class Persistent : public Handle<T> {
|
|
|
| /** Returns true if the handle's reference is weak. */
|
| inline bool IsWeak() const;
|
| + inline bool IsWeak(Isolate* isolate) const;
|
|
|
| /**
|
| * Assigns a wrapper class ID to the handle. See RetainedObjectInfo
|
| @@ -3260,6 +3263,10 @@ class V8EXPORT V8 {
|
| static void AddObjectGroup(Persistent<Value>* objects,
|
| size_t length,
|
| RetainedObjectInfo* info = NULL);
|
| + static void AddObjectGroup(Isolate* isolate,
|
| + Persistent<Value>* objects,
|
| + size_t length,
|
| + RetainedObjectInfo* info = NULL);
|
|
|
| /**
|
| * Allows the host application to declare implicit references between
|
| @@ -3491,11 +3498,17 @@ class V8EXPORT V8 {
|
| static void MakeWeak(internal::Object** global_handle,
|
| void* data,
|
| WeakReferenceCallback);
|
| + static void MakeWeak(internal::Isolate* isolate,
|
| + internal::Object** global_handle,
|
| + void* data,
|
| + WeakReferenceCallback);
|
| static void ClearWeak(internal::Object** global_handle);
|
| static void MarkIndependent(internal::Object** global_handle);
|
| static bool IsGlobalIndependent(internal::Object** global_handle);
|
| static bool IsGlobalNearDeath(internal::Object** global_handle);
|
| static bool IsGlobalWeak(internal::Object** global_handle);
|
| + static bool IsGlobalWeak(internal::Isolate* isolate,
|
| + internal::Object** global_handle);
|
| static void SetWrapperClassId(internal::Object** global_handle,
|
| uint16_t class_id);
|
| static uint16_t GetWrapperClassId(internal::Object** global_handle);
|
| @@ -4237,6 +4250,14 @@ bool Persistent<T>::IsWeak() const {
|
|
|
|
|
| template <class T>
|
| +bool Persistent<T>::IsWeak(Isolate* isolate) const {
|
| + if (this->IsEmpty()) return false;
|
| + return V8::IsGlobalWeak(reinterpret_cast<internal::Isolate*>(isolate),
|
| + reinterpret_cast<internal::Object**>(**this));
|
| +}
|
| +
|
| +
|
| +template <class T>
|
| void Persistent<T>::Dispose() {
|
| if (this->IsEmpty()) return;
|
| V8::DisposeGlobal(reinterpret_cast<internal::Object**>(**this));
|
| @@ -4254,6 +4275,15 @@ void Persistent<T>::MakeWeak(void* parameters, WeakReferenceCallback callback) {
|
| }
|
|
|
| template <class T>
|
| +void Persistent<T>::MakeWeak(Isolate* isolate, void* parameters,
|
| + WeakReferenceCallback callback) {
|
| + V8::MakeWeak(reinterpret_cast<internal::Isolate*>(isolate),
|
| + reinterpret_cast<internal::Object**>(**this),
|
| + parameters,
|
| + callback);
|
| +}
|
| +
|
| +template <class T>
|
| void Persistent<T>::ClearWeak() {
|
| V8::ClearWeak(reinterpret_cast<internal::Object**>(**this));
|
| }
|
|
|