Chromium Code Reviews| Index: include/v8.h |
| diff --git a/include/v8.h b/include/v8.h |
| index b113d74792108c62ff13627b8117598c17b1b297..59b70f2ac0d9d9d2f9de741d4d433d79d12594c5 100644 |
| --- a/include/v8.h |
| +++ b/include/v8.h |
| @@ -676,6 +676,11 @@ template <class T> class Persistent // NOLINT |
| // TODO(dcarney): remove before cutover |
| V8_INLINE(uint16_t WrapperClassId(Isolate* isolate) const); |
| + /** |
| + * Disposes the current contents of the handle and replaces it. |
| + */ |
| + V8_INLINE(void Reset(Isolate* isolate, const Handle<T>& other)); |
| + |
| #ifndef V8_USE_UNSAFE_HANDLES |
| #ifndef V8_ALLOW_ACCESS_TO_PERSISTENT_IMPLICIT |
| @@ -5349,6 +5354,20 @@ void Persistent<T>::SetWrapperClassId(uint16_t class_id) { |
| } |
| template <class T> |
| +void Persistent<T>::Reset(Isolate* isolate, const Handle<T>& other) { |
| + Dispose(isolate); |
| +#ifdef V8_USE_UNSAFE_HANDLES |
| + *this = *New(isolate, other); |
| +#else |
| + if (other.IsEmpty()) |
| + return; |
|
Sven Panne
2013/05/07 09:49:31
Style nit: Put this on the previous line. Debatabl
marja
2013/05/07 11:17:17
I added "this->val_ = NULL" here, so this became a
|
| + internal::Object** p = reinterpret_cast<internal::Object**>(other.val_); |
| + val_ = reinterpret_cast<T*>( |
| + V8::GlobalizeReference(reinterpret_cast<internal::Isolate*>(isolate), p)); |
| +#endif |
| +} |
| + |
| +template <class T> |
| void Persistent<T>::SetWrapperClassId(Isolate* isolate, uint16_t class_id) { |
| typedef internal::Internals I; |
| if (this->IsEmpty()) return; |